)]}'
{"CONTRIBUTING.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"submitted for review via the Gerrit tool:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"   https://docs.openstack.org/infra/manual/developers.html#development-workflow"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Pull requests submitted through GitHub will be ignored."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Bugs should be filed on Launchpad, not GitHub:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_4a8b401d","side":"PARENT","line":12,"updated":"2018-09-14 15:00:02.000000000","message":"these are unreleated changes they should be in a seperate patch.","commit_id":"ca7accd7ebb8aa884ce48cbbd6c687d426dcc97b"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"40aeb9d5902262338347e1c61d5414373e7c327c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"submitted for review via the Gerrit tool:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"   https://docs.openstack.org/infra/manual/developers.html#development-workflow"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Pull requests submitted through GitHub will be ignored."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Bugs should be filed on Launchpad, not GitHub:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_3965e3af","side":"PARENT","line":12,"in_reply_to":"3f79a3b5_4a8b401d","updated":"2018-09-19 03:06:09.000000000","message":"I agree. And I think you have seen several patch like this one. Because we don\u0027t want to accept commit like this one: https://review.openstack.org/#/c/576754/\nWhat do you think if I descript it in the commit message?","commit_id":"ca7accd7ebb8aa884ce48cbbd6c687d426dcc97b"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b4913421b3405758e17a9f9fab7f591ca21bd6e3","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"   https://docs.openstack.org/infra/manual/developers.html#development-workflow"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Pull requests submitted through GitHub will be ignored."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Bugs should be filed on Launchpad, not GitHub:"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5fc1f717_267a0888","side":"PARENT","line":13,"updated":"2019-03-20 12:35:06.000000000","message":"I\u0027m curious why you are deleting this section. Since Cyborg uses the Gerrit workflow, isn\u0027t this still important?","commit_id":"374531ee3eb11c8e42dd0ea374b101f2cf31313b"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"9c8d3be0e349a91176d1ae3f5ccfed4df87942d7","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"   https://docs.openstack.org/infra/manual/developers.html#development-workflow"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Pull requests submitted through GitHub will be ignored."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Bugs should be filed on Launchpad, not GitHub:"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5fc1f717_1edce216","side":"PARENT","line":13,"in_reply_to":"5fc1f717_267a0888","updated":"2019-03-21 04:50:18.000000000","message":"One more line was removed. I\u0027m sorry.","commit_id":"374531ee3eb11c8e42dd0ea374b101f2cf31313b"}],"cyborg/accelerator/drivers/fpga/base.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    \"\"\"Base class for FPGA drivers."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"       This is just a virtual FPGA drivers interface."},{"line_number":30,"context_line":"       Vedor should implement their specific drivers."},{"line_number":31,"context_line":"    \"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_2a8da429","side":"PARENT","line":30,"updated":"2018-09-14 15:00:02.000000000","message":"there is a spelling mistake here but its unrelated to adding gpu support so it should be fixed in a seperate change.","commit_id":"ca7accd7ebb8aa884ce48cbbd6c687d426dcc97b"}],"cyborg/accelerator/drivers/gpu/__init__.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def load_gpu_vendor_driver():"},{"line_number":30,"context_line":"    files \u003d glob.glob(os.path.join(os.path.dirname(__file__), \"*/driver*\"))"},{"line_number":31,"context_line":"    modules \u003d set(map(lambda s: \".\".join(s.rsplit(\".\")[0].rsplit(\"/\", 2)[-2:]),"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_aa921457","line":28,"updated":"2018-09-14 15:00:02.000000000","message":"this should use steavadore\nor at a minium you should add a FIXME(...): convert to stevadore","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"40aeb9d5902262338347e1c61d5414373e7c327c","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def load_gpu_vendor_driver():"},{"line_number":30,"context_line":"    files \u003d glob.glob(os.path.join(os.path.dirname(__file__), \"*/driver*\"))"},{"line_number":31,"context_line":"    modules \u003d set(map(lambda s: \".\".join(s.rsplit(\".\")[0].rsplit(\"/\", 2)[-2:]),"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_791d9b0d","line":28,"in_reply_to":"3f79a3b5_aa921457","updated":"2018-09-19 03:06:09.000000000","message":"I prefer to use stevedore to load type drivers. Then auto load all vendor drivers of this type. In this way, we needn\u0027t extend setup.cfg again and again when we just have a new vendor driver.","commit_id":"78643fa14ae42360325117081716a7249203b651"}],"cyborg/accelerator/drivers/gpu/base.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b4913421b3405758e17a9f9fab7f591ca21bd6e3","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        raise LookupError(\"Not find the GPU driver for vendor %s\" % vendor)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":45,"context_line":"        pass"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def discover(self):"},{"line_number":48,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_c67c6474","line":45,"updated":"2019-03-20 12:35:06.000000000","message":"There is no need to create a noop ___init__().","commit_id":"212c70d70e7eb7b45817b52f2ddf6d32af285701"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"9c8d3be0e349a91176d1ae3f5ccfed4df87942d7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        raise LookupError(\"Not find the GPU driver for vendor %s\" % vendor)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":45,"context_line":"        pass"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def discover(self):"},{"line_number":48,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_feb556ce","line":45,"in_reply_to":"5fc1f717_c67c6474","updated":"2019-03-21 04:50:18.000000000","message":"Done","commit_id":"212c70d70e7eb7b45817b52f2ddf6d32af285701"}],"cyborg/accelerator/drivers/gpu/nvidia/driver.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"cad9d523b24cd51919277d7d5c0f7586633a23a2","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":"Cyborg Intel GPU driver implementation."},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import subprocess"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_ef6b33ed","line":17,"range":{"start_line":17,"start_character":7,"end_line":17,"end_character":12},"updated":"2018-07-16 12:42:51.000000000","message":"NVIDIA","commit_id":"0e499f655531bce5e045159c8d285eae3192fc19"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"cad9d523b24cd51919277d7d5c0f7586633a23a2","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Cyborg Intel GPU driver implementation."},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import subprocess"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cyborg.accelerator.drivers.gpu.base import GPUDriver"},{"line_number":23,"context_line":"from cyborg.accelerator.drivers.gpu.nvidia import sysinfo"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_0f5f8f4d","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":17},"updated":"2018-07-16 12:42:51.000000000","message":"why this is imported?","commit_id":"0e499f655531bce5e045159c8d285eae3192fc19"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"cad9d523b24cd51919277d7d5c0f7586633a23a2","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    \"\"\"Base class for GPU drivers."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"       This is just a virtual GPU drivers interface."},{"line_number":30,"context_line":"       Vedor should implement their specific drivers."},{"line_number":31,"context_line":"    \"\"\""},{"line_number":32,"context_line":"    VENDOR \u003d \"nvidia\""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_6fa2c341","line":30,"range":{"start_line":30,"start_character":7,"end_line":30,"end_character":13},"updated":"2018-07-16 12:42:51.000000000","message":"Vendor","commit_id":"0e499f655531bce5e045159c8d285eae3192fc19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def discover(self):"},{"line_number":36,"context_line":"        return sysinfo.gpu_tree()"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def program(self, *args, **kwargs):"},{"line_number":39,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_eaa80c8d","line":38,"updated":"2018-09-14 15:00:02.000000000","message":"you cannot program a gpu from the host.\nthis method does not make sense to exposed in the\ngpu driver so it should be removed.","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b4913421b3405758e17a9f9fab7f591ca21bd6e3","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    VENDOR \u003d \"nvidia\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":33,"context_line":"        pass"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def discover(self):"},{"line_number":36,"context_line":"        return sysinfo.gpu_tree()"}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_46e5d437","line":33,"updated":"2019-03-20 12:35:06.000000000","message":"This is dangerous, if you ever define some common driver behavior at initialization. It should be removed.","commit_id":"212c70d70e7eb7b45817b52f2ddf6d32af285701"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"9c8d3be0e349a91176d1ae3f5ccfed4df87942d7","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    VENDOR \u003d \"nvidia\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":33,"context_line":"        pass"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def discover(self):"},{"line_number":36,"context_line":"        return sysinfo.gpu_tree()"}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_bec7ce45","line":33,"in_reply_to":"5fc1f717_46e5d437","updated":"2019-03-21 04:50:18.000000000","message":"Done","commit_id":"212c70d70e7eb7b45817b52f2ddf6d32af285701"}],"cyborg/accelerator/drivers/gpu/nvidia/sysinfo.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"cad9d523b24cd51919277d7d5c0f7586633a23a2","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":"Cyborg Intel GPU driver implementation."},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cyborg.accelerator.drivers.gpu import utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_6f7723d3","line":17,"range":{"start_line":17,"start_character":7,"end_line":17,"end_character":12},"updated":"2018-07-16 12:42:51.000000000","message":"NVIDIA","commit_id":"0e499f655531bce5e045159c8d285eae3192fc19"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"cad9d523b24cd51919277d7d5c0f7586633a23a2","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cyborg.accelerator.drivers.gpu import utils"},{"line_number":21,"context_line":"VENDER_ID \u003d \"10de\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def gpu_tree():"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_0f48ef87","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":9},"updated":"2018-07-16 12:42:51.000000000","message":"VENDOR_ID","commit_id":"0e499f655531bce5e045159c8d285eae3192fc19"}],"cyborg/accelerator/drivers/gpu/utils.py":[{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"164fc98701e2305af729c1c9311e4f79e95665af","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                              \"{4}):(?P\u003cproduct_id\u003e[0-9a-fA-F]{4})] .*\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def discover_vendors():"},{"line_number":36,"context_line":"    cmd \u003d \"sudo lspci -nnn | grep -E \u0027%s\u0027\""},{"line_number":37,"context_line":"    cmd \u003d cmd % \"|\".join(GPU_FLAGS)"},{"line_number":38,"context_line":"    p \u003d subprocess.Popen(cmd, stdout\u003dsubprocess.PIPE, shell\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_bfb614d9","line":35,"range":{"start_line":35,"start_character":4,"end_line":35,"end_character":20},"updated":"2018-08-07 02:26:37.000000000","message":"Is this code generally applicable to different vendors? e.g. Intel/NVdia/AMD(assuming...)","commit_id":"79b38c69a4bef9043388454c83fa6e44332e4be7"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"a291e77cf0880990df5c2c29ccbf12140bfe85a6","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                              \"{4}):(?P\u003cproduct_id\u003e[0-9a-fA-F]{4})] .*\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def discover_vendors():"},{"line_number":36,"context_line":"    cmd \u003d \"sudo lspci -nnn | grep -E \u0027%s\u0027\""},{"line_number":37,"context_line":"    cmd \u003d cmd % \"|\".join(GPU_FLAGS)"},{"line_number":38,"context_line":"    p \u003d subprocess.Popen(cmd, stdout\u003dsubprocess.PIPE, shell\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_1f893922","line":35,"range":{"start_line":35,"start_character":4,"end_line":35,"end_character":20},"in_reply_to":"3f79a3b5_bfb614d9","updated":"2018-08-07 15:45:08.000000000","message":"Yes, the Intel GPU info may be \"00:07.0 3D controller [0302]: Intel Corporation Iris Pro Graphics 580 [8086:1932] (rev a1)\". The vendors set will contain 8086 if it exists. In fact, the format of pci_device info is similar.","commit_id":"79b38c69a4bef9043388454c83fa6e44332e4be7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a3e9706fd5314777b7e4890cb500a14c7c75159f","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def discover_vendors():"},{"line_number":36,"context_line":"    cmd \u003d \"sudo lspci -nnn | grep -E \u0027%s\u0027\""},{"line_number":37,"context_line":"    cmd \u003d cmd % \"|\".join(GPU_FLAGS)"},{"line_number":38,"context_line":"    p \u003d subprocess.Popen(cmd, stdout\u003dsubprocess.PIPE, shell\u003dTrue)"},{"line_number":39,"context_line":"    p.wait()"},{"line_number":40,"context_line":"    gpus \u003d p.stdout.readlines()"},{"line_number":41,"context_line":"    vendors \u003d set()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_8a9c316b","line":38,"range":{"start_line":36,"start_character":4,"end_line":38,"end_character":65},"updated":"2018-08-30 06:22:25.000000000","message":"this has several issues.\n\nfirst this violates the openstack security guidlines on preventing shell injection attacks\n\nhttps://security.openstack.org/guidelines/dg_avoid-shell-true.html\n\nsecond you are assuming that 1.) lscpi is installed 2.) this code is running on the same node as the gpu. in a xen dom0 may not be able to see the gpu, for vsphyer or powervm  you may not be able to run an agent with a shell on the hypervior host. 3.) this is assuming the host os is linux and that sudo is installed. if you run cyborg on a windows host this will break. 4.) you are assuming that the architecture support PCI \non arm or other non x86 architecutre you may have gpu attached to busses other then pcie\n\nfinally i belive using subprocess.Popen directly is bypass rootwarp so there is no restriction on what command can be executed.","commit_id":"79b38c69a4bef9043388454c83fa6e44332e4be7"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"4a7a57d8705805bca25eee5490a7543952870201","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def discover_vendors():"},{"line_number":36,"context_line":"    cmd \u003d \"sudo lspci -nnn | grep -E \u0027%s\u0027\""},{"line_number":37,"context_line":"    cmd \u003d cmd % \"|\".join(GPU_FLAGS)"},{"line_number":38,"context_line":"    p \u003d subprocess.Popen(cmd, stdout\u003dsubprocess.PIPE, shell\u003dTrue)"},{"line_number":39,"context_line":"    p.wait()"},{"line_number":40,"context_line":"    gpus \u003d p.stdout.readlines()"},{"line_number":41,"context_line":"    vendors \u003d set()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_bf291b8a","line":38,"range":{"start_line":36,"start_character":4,"end_line":38,"end_character":65},"in_reply_to":"3f79a3b5_8a9c316b","updated":"2018-08-30 18:00:06.000000000","message":"Thx. I try to summarize what you said. \n1. The security， which caused by execute command or  directly.\n2. The compatibility, include arch, system and so on.\nAll of them are common issues in cyborg now. \nFor the first one, I think it\u0027s better to use rootwrap. I want to refactor all the drivers. In another patch later.\nFor the second, as you see, cyborg doesn\u0027t support different arch and systems. It\u0027s a big touch for cyborg. I want to disscuss with our team at PTG, https://etherpad.openstack.org/p/cyborg-ptg-stein see 13th.","commit_id":"79b38c69a4bef9043388454c83fa6e44332e4be7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c92158b29733e12784dc0fa441b0f146da96f39","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def discover_vendors():"},{"line_number":36,"context_line":"    cmd \u003d \"sudo lspci -nnn | grep -E \u0027%s\u0027\""},{"line_number":37,"context_line":"    cmd \u003d cmd % \"|\".join(GPU_FLAGS)"},{"line_number":38,"context_line":"    p \u003d subprocess.Popen(cmd, stdout\u003dsubprocess.PIPE, shell\u003dTrue)"},{"line_number":39,"context_line":"    p.wait()"},{"line_number":40,"context_line":"    gpus \u003d p.stdout.readlines()"},{"line_number":41,"context_line":"    vendors \u003d set()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_69109801","line":38,"range":{"start_line":36,"start_character":4,"end_line":38,"end_character":65},"in_reply_to":"3f79a3b5_bf291b8a","updated":"2018-08-31 16:12:45.000000000","message":"ok if this will be adress project wide later then you can ignore these comment. i would not suggest building on rootwrap however.  rootwrap is effectively deprecated in favor of using oslo.privsep. we should probably move to using that in the future.","commit_id":"79b38c69a4bef9043388454c83fa6e44332e4be7"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"164fc98701e2305af729c1c9311e4f79e95665af","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    return vendors"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def discover_gpus(vender_id\u003dNone):"},{"line_number":51,"context_line":"    cmd \u003d \"sudo lspci -nnn | grep -E \u0027%s\u0027\""},{"line_number":52,"context_line":"    cmd \u003d cmd % \"|\".join(GPU_FLAGS)"},{"line_number":53,"context_line":"    if vender_id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_5fcb4052","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":17},"updated":"2018-08-07 02:26:37.000000000","message":"same question as above?","commit_id":"79b38c69a4bef9043388454c83fa6e44332e4be7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a3e9706fd5314777b7e4890cb500a14c7c75159f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    return vendors"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def discover_gpus(vender_id\u003dNone):"},{"line_number":51,"context_line":"    cmd \u003d \"sudo lspci -nnn | grep -E \u0027%s\u0027\""},{"line_number":52,"context_line":"    cmd \u003d cmd % \"|\".join(GPU_FLAGS)"},{"line_number":53,"context_line":"    if vender_id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_eac6054a","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":17},"in_reply_to":"3f79a3b5_5fcb4052","updated":"2018-08-30 06:22:25.000000000","message":"again this is linux/x86 specific and is not a general solution","commit_id":"79b38c69a4bef9043388454c83fa6e44332e4be7"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"4a7a57d8705805bca25eee5490a7543952870201","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    return vendors"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def discover_gpus(vender_id\u003dNone):"},{"line_number":51,"context_line":"    cmd \u003d \"sudo lspci -nnn | grep -E \u0027%s\u0027\""},{"line_number":52,"context_line":"    cmd \u003d cmd % \"|\".join(GPU_FLAGS)"},{"line_number":53,"context_line":"    if vender_id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_1f3fefb5","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":17},"in_reply_to":"3f79a3b5_eac6054a","updated":"2018-08-30 18:00:06.000000000","message":"Same.","commit_id":"79b38c69a4bef9043388454c83fa6e44332e4be7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a3e9706fd5314777b7e4890cb500a14c7c75159f","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    :param devices: Original pcie_addr"},{"line_number":74,"context_line":"    :return: Addr matched nova like 0000:00:06.0."},{"line_number":75,"context_line":"    \"\"\""},{"line_number":76,"context_line":"    addr \u003d \u00270000:%s\u0027 % devices"},{"line_number":77,"context_line":"    return addr"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_4a04d97e","line":76,"range":{"start_line":76,"start_character":11,"end_line":76,"end_character":30},"updated":"2018-08-30 06:22:25.000000000","message":"this will break on systems with more then one cpu socket as the pcie domain for the second socket will not start with 0000:","commit_id":"79b38c69a4bef9043388454c83fa6e44332e4be7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"def discover_vendors():"},{"line_number":38,"context_line":"    cmd \u003d \"sudo lspci -nnn | grep -E \u0027%s\u0027\""},{"line_number":39,"context_line":"    cmd \u003d cmd % \"|\".join(GPU_FLAGS)"},{"line_number":40,"context_line":"    p \u003d subprocess.Popen(cmd, stdout\u003dsubprocess.PIPE, shell\u003dTrue)"},{"line_number":41,"context_line":"    p.wait()"},{"line_number":42,"context_line":"    gpus \u003d p.stdout.readlines()"},{"line_number":43,"context_line":"    vendors \u003d set()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_ca8d1036","line":40,"updated":"2018-09-14 15:00:02.000000000","message":"i have left this comment on previous review that this patern of using Popen with shell\u003dTrue should be avoided. i understand that it has been used in other places in\ncyborg already but going forward it would be better not to intoduce more cases.\nthis case is \"safe\" as we are not using any user input as part of the command.","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    cmd \u003d cmd % \"|\".join(GPU_FLAGS)"},{"line_number":55,"context_line":"    if vender_id:"},{"line_number":56,"context_line":"        cmd \u003d cmd + \"| grep \" + vender_id"},{"line_number":57,"context_line":"    p \u003d subprocess.Popen(cmd, stdout\u003dsubprocess.PIPE, shell\u003dTrue)"},{"line_number":58,"context_line":"    p.wait()"},{"line_number":59,"context_line":"    gpus \u003d p.stdout.readlines()"},{"line_number":60,"context_line":"    gpu_list \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_6a9cfc69","line":57,"updated":"2018-09-14 15:00:02.000000000","message":"this use of Popen is also safe but at a mimium i would like to see a fixme comment to remove this in the future. the same should be added to the previous use of Popen.","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    dpf.name \u003d gpu_dict[\"name\"]"},{"line_number":84,"context_line":"    # TODO(wangzhh): Modify default assignable when we have a conclusion about"},{"line_number":85,"context_line":"    # device whitelist."},{"line_number":86,"context_line":"    dpf.assignable \u003d True"},{"line_number":87,"context_line":"    dpf.address \u003d _match_nova_addr(gpu_dict[\"devices\"])"},{"line_number":88,"context_line":"    dpfs \u003d [dpf]"},{"line_number":89,"context_line":"    return dpfs"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_8a971846","line":86,"updated":"2018-09-14 15:00:02.000000000","message":"this needs to be set to False by default or it will conflict with novas support for vgpus","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"40aeb9d5902262338347e1c61d5414373e7c327c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    dpf.name \u003d gpu_dict[\"name\"]"},{"line_number":84,"context_line":"    # TODO(wangzhh): Modify default assignable when we have a conclusion about"},{"line_number":85,"context_line":"    # device whitelist."},{"line_number":86,"context_line":"    dpf.assignable \u003d True"},{"line_number":87,"context_line":"    dpf.address \u003d _match_nova_addr(gpu_dict[\"devices\"])"},{"line_number":88,"context_line":"    dpfs \u003d [dpf]"},{"line_number":89,"context_line":"    return dpfs"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_b9b573ef","line":86,"in_reply_to":"3f79a3b5_8a971846","updated":"2018-09-19 03:06:09.000000000","message":"Sorry, I don\u0027t understand it, could u give me an example?","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    :param devices: Original pcie_addr"},{"line_number":102,"context_line":"    :return: Addr matched nova like 0000:00:06.0."},{"line_number":103,"context_line":"    \"\"\""},{"line_number":104,"context_line":"    addr \u003d \u00270000:%s\u0027 % devices"},{"line_number":105,"context_line":"    return addr"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_2a884420","line":104,"updated":"2018-09-14 15:00:02.000000000","message":"this will break if you have more then 1 socket as the domain will not be 0000","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"190e29e957c1ef8f9315d0ff96c2041d9169c081","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    return driver_cpid"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def _generate_dep_list(gpu):"},{"line_number":100,"context_line":"    dep_list \u003d []"},{"line_number":101,"context_line":"    driver_dep \u003d driver_deployable.DriverDeployable()"},{"line_number":102,"context_line":"    driver_dep.attach_handle_list \u003d []"}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_662b3094","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":22},"updated":"2019-03-07 02:20:51.000000000","message":"pls set deployable name, is unique and essential.","commit_id":"d204c4b5c8580fa4fa16ee31ad12fcaa8d002174"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"9c8d3be0e349a91176d1ae3f5ccfed4df87942d7","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    return driver_cpid"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def _generate_dep_list(gpu):"},{"line_number":100,"context_line":"    dep_list \u003d []"},{"line_number":101,"context_line":"    driver_dep \u003d driver_deployable.DriverDeployable()"},{"line_number":102,"context_line":"    driver_dep.attach_handle_list \u003d []"}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_1ae400ac","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":22},"in_reply_to":"5fc1f717_662b3094","updated":"2019-03-21 04:50:18.000000000","message":"Done","commit_id":"d204c4b5c8580fa4fa16ee31ad12fcaa8d002174"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"0cd59d0050c84b60d7ac38a031f9bf9493cf8f38","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def _generate_attach_handle(gpu):"},{"line_number":111,"context_line":"    driver_ah \u003d driver_attach_handle.DriverAttachHandle()"},{"line_number":112,"context_line":"    driver_ah.attach_type \u003d \"pci\""},{"line_number":113,"context_line":"    driver_ah.attach_info \u003d gpu[\"devices\"]"},{"line_number":114,"context_line":"    return driver_ah"}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_6656d02c","line":112,"range":{"start_line":112,"start_character":4,"end_line":112,"end_character":13},"updated":"2019-03-07 02:19:27.000000000","message":"pls also update in_use field.","commit_id":"d204c4b5c8580fa4fa16ee31ad12fcaa8d002174"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"9c8d3be0e349a91176d1ae3f5ccfed4df87942d7","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def _generate_attach_handle(gpu):"},{"line_number":111,"context_line":"    driver_ah \u003d driver_attach_handle.DriverAttachHandle()"},{"line_number":112,"context_line":"    driver_ah.attach_type \u003d \"pci\""},{"line_number":113,"context_line":"    driver_ah.attach_info \u003d gpu[\"devices\"]"},{"line_number":114,"context_line":"    return driver_ah"}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_3ae1bc9b","line":112,"range":{"start_line":112,"start_character":4,"end_line":112,"end_character":13},"in_reply_to":"5fc1f717_6656d02c","updated":"2019-03-21 04:50:18.000000000","message":"Done","commit_id":"d204c4b5c8580fa4fa16ee31ad12fcaa8d002174"}],"cyborg/tests/unit/accelerator/drivers/gpu/fake_data.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"NVIDIA_GPU_INFO \u003d \"00:06.0 3D controller [0302]: NVIDIA Corporation GP100GL \" \\"},{"line_number":17,"context_line":"                  \"[Tesla P100 PCIe 12GB] [10de:15f7] (rev a1)\""},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_0aac689d","line":15,"updated":"2018-09-14 15:00:02.000000000","message":"rather then manually creating these mocks here you would be better using\nthe unit test mock.patch decorators","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"9c8d3be0e349a91176d1ae3f5ccfed4df87942d7","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"NVIDIA_GPU_INFO \u003d \"00:06.0 3D controller [0302]: NVIDIA Corporation GP100GL \" \\"},{"line_number":17,"context_line":"                  \"[Tesla P100 PCIe 12GB] [10de:15f7] (rev a1)\""},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_38126ffe","line":15,"in_reply_to":"3f79a3b5_0aac689d","updated":"2019-03-21 04:50:18.000000000","message":"Yes, They are fake data for mock return value.","commit_id":"78643fa14ae42360325117081716a7249203b651"}],"cyborg/tests/unit/accelerator/drivers/gpu/nvidia/test_driver.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"cad9d523b24cd51919277d7d5c0f7586633a23a2","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":"import subprocess"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import fixtures"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cyborg.accelerator.drivers.fpga.intel import sysinfo"},{"line_number":22,"context_line":"from cyborg.accelerator.drivers.fpga.intel.driver import IntelFPGADriver"},{"line_number":23,"context_line":"from cyborg.accelerator.drivers.gpu.nvidia.driver import NVIDIAGPUDriver"},{"line_number":24,"context_line":"from cyborg.tests import base"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_923c28c1","line":22,"range":{"start_line":15,"start_character":0,"end_line":22,"end_character":72},"updated":"2018-07-16 12:42:51.000000000","message":"No need of all that","commit_id":"0e499f655531bce5e045159c8d285eae3192fc19"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"cad9d523b24cd51919277d7d5c0f7586633a23a2","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cyborg.accelerator.drivers.fpga.intel import sysinfo"},{"line_number":22,"context_line":"from cyborg.accelerator.drivers.fpga.intel.driver import IntelFPGADriver"},{"line_number":23,"context_line":"from cyborg.accelerator.drivers.gpu.nvidia.driver import NVIDIAGPUDriver"},{"line_number":24,"context_line":"from cyborg.tests import base"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_926508e5","line":23,"range":{"start_line":23,"start_character":57,"end_line":23,"end_character":72},"updated":"2018-07-16 12:42:51.000000000","message":"I imagine we are expecting some mocked test at least to assert calls","commit_id":"0e499f655531bce5e045159c8d285eae3192fc19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from cyborg.tests import base"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"class TestNvidiaGPUDriver(base.TestCase):"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    def setUp(self):"},{"line_number":19,"context_line":"        super(TestNvidiaGPUDriver, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_ea81ecfc","line":16,"updated":"2018-09-14 15:00:02.000000000","message":"this does nothing useful\nif you are just calling the parent setup and teardown its the same\nbehavior as not definging the methods.","commit_id":"78643fa14ae42360325117081716a7249203b651"}],"cyborg/tests/unit/accelerator/drivers/gpu/test_base.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class TestGPUDriver(base.TestCase):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def setUp(self):"},{"line_number":25,"context_line":"        super(TestGPUDriver, self).setUp()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_0a854807","line":24,"updated":"2018-09-14 15:00:02.000000000","message":"setup and teardown are not needed as you are not changeing the default behavior","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"1b9792aaa83d01e7328a4ad6f26c77e1d9617f9c","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"import subprocess"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cyborg.accelerator.drivers.gpu.base import GPUDriver"}],"source_content_type":"text/x-python","patch_set":12,"id":"5fc1f717_84388fd3","line":15,"range":{"start_line":15,"start_character":7,"end_line":15,"end_character":11},"updated":"2019-03-07 10:57:43.000000000","message":"unused module?","commit_id":"0714e53aac9ee0a65f655956da065b514db9cd89"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"9c8d3be0e349a91176d1ae3f5ccfed4df87942d7","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"import subprocess"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cyborg.accelerator.drivers.gpu.base import GPUDriver"}],"source_content_type":"text/x-python","patch_set":12,"id":"5fc1f717_df8501af","line":15,"range":{"start_line":15,"start_character":7,"end_line":15,"end_character":11},"in_reply_to":"5fc1f717_84388fd3","updated":"2019-03-21 04:50:18.000000000","message":"Done","commit_id":"0714e53aac9ee0a65f655956da065b514db9cd89"}],"cyborg/tests/unit/accelerator/drivers/gpu/test_utils.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(TestGPUDriverUtils, self).setUp()"},{"line_number":27,"context_line":"        self.p \u003d fake_data.p()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def tearDown(self):"},{"line_number":30,"context_line":"        super(TestGPUDriverUtils, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_aa7bf426","line":27,"updated":"2018-09-14 15:00:02.000000000","message":"i would move the definition of the fake_data to this file\nsince it is only used in this file","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        super(TestGPUDriverUtils, self).setUp()"},{"line_number":27,"context_line":"        self.p \u003d fake_data.p()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def tearDown(self):"},{"line_number":30,"context_line":"        super(TestGPUDriverUtils, self).tearDown()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch.object(subprocess, \u0027Popen\u0027, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_ca767040","line":29,"updated":"2018-09-14 15:00:02.000000000","message":"tearDown is not needed in this case","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_discover_vendors(self, mock_popen):"},{"line_number":34,"context_line":"        mock_popen.return_value \u003d self.p"},{"line_number":35,"context_line":"        gpu_venders \u003d utils.discover_vendors()"},{"line_number":36,"context_line":"        self.assertEqual(1, len(gpu_venders))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @mock.patch.object(subprocess, \u0027Popen\u0027, autospec\u003dTrue)"},{"line_number":39,"context_line":"    def test_discover_gpus(self, mock_popen):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_6a75dc31","line":36,"updated":"2018-09-14 15:00:02.000000000","message":"since the fake data is not in this file it was not obvious that this is correct\nhowever given the current defintion of the fake data this is correct","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"159fa975888a096fdf4f2bc4aca96a5f72a85f6e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        gpu_list \u003d utils.discover_gpus(vender_id)"},{"line_number":43,"context_line":"        print gpu_list"},{"line_number":44,"context_line":"        self.assertEqual(1, len(gpu_list))"},{"line_number":45,"context_line":"        expect \u003d {"},{"line_number":46,"context_line":"            \u0027assignable\u0027: True,"},{"line_number":47,"context_line":"            \u0027controller\u0027: \u00273D controller\u0027,"},{"line_number":48,"context_line":"            \u0027devices\u0027: \u00270000:00:06.0\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_8a707842","line":45,"updated":"2018-09-14 15:00:02.000000000","message":"this should be an object not a dict.\nnit: its better to use past tence here so expected instead of expect","commit_id":"78643fa14ae42360325117081716a7249203b651"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"1b9792aaa83d01e7328a4ad6f26c77e1d9617f9c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        expected \u003d {"},{"line_number":66,"context_line":"            \u0027vendor\u0027: \u002710de\u0027,"},{"line_number":67,"context_line":"            \u0027type\u0027: \u0027GPU\u0027,"},{"line_number":68,"context_line":"            \u0027name\u0027: \u0027NVIDIA Corporation GP100GL [Tesla P100 PCIe 12GB]\u0027,"},{"line_number":69,"context_line":"            \u0027std_board_info\u0027:"},{"line_number":70,"context_line":"                {\"controller\": \"3D controller\", \"product_id\": \"15f7\"},"},{"line_number":71,"context_line":"            \u0027deployable_list\u0027:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5fc1f717_0e8fde2a","line":68,"range":{"start_line":68,"start_character":13,"end_line":68,"end_character":17},"updated":"2019-03-07 10:57:43.000000000","message":"there is no field named \"name\" in driver_device.","commit_id":"0714e53aac9ee0a65f655956da065b514db9cd89"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"9c8d3be0e349a91176d1ae3f5ccfed4df87942d7","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        expected \u003d {"},{"line_number":66,"context_line":"            \u0027vendor\u0027: \u002710de\u0027,"},{"line_number":67,"context_line":"            \u0027type\u0027: \u0027GPU\u0027,"},{"line_number":68,"context_line":"            \u0027name\u0027: \u0027NVIDIA Corporation GP100GL [Tesla P100 PCIe 12GB]\u0027,"},{"line_number":69,"context_line":"            \u0027std_board_info\u0027:"},{"line_number":70,"context_line":"                {\"controller\": \"3D controller\", \"product_id\": \"15f7\"},"},{"line_number":71,"context_line":"            \u0027deployable_list\u0027:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5fc1f717_7f92cdf8","line":68,"range":{"start_line":68,"start_character":13,"end_line":68,"end_character":17},"in_reply_to":"5fc1f717_0e8fde2a","updated":"2019-03-21 04:50:18.000000000","message":"Done","commit_id":"0714e53aac9ee0a65f655956da065b514db9cd89"}]}
