)]}'
{"cyborg/common/policy.py":[{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"c8340ac7d4695ba98b9ff56fe85e3b11442fd7ed","unresolved":false,"context_lines":[{"line_number":73,"context_line":"#       All of these may be overridden by configuration, but we can"},{"line_number":74,"context_line":"#       depend on their existence throughout the code."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"device_policies \u003d ["},{"line_number":77,"context_line":"    policy.RuleDefault(\u0027cyborg:device:get\u0027,"},{"line_number":78,"context_line":"                       \u0027rule:default\u0027,"},{"line_number":79,"context_line":"                       description\u003d\u0027Retrieve device records\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_360e878d","line":76,"updated":"2019-01-24 12:46:18.000000000","message":"The RBAC is used for api, I think it should not exist in this patch. BTW, IMO, \u0027create\u0027 and  \u0027delete\u0027 shouldn\u0027t be allowed in api.","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"1f2a95e97d1105195d9bda0641981f60eabd3ce2","unresolved":false,"context_lines":[{"line_number":73,"context_line":"#       All of these may be overridden by configuration, but we can"},{"line_number":74,"context_line":"#       depend on their existence throughout the code."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"device_policies \u003d ["},{"line_number":77,"context_line":"    policy.RuleDefault(\u0027cyborg:device:get\u0027,"},{"line_number":78,"context_line":"                       \u0027rule:default\u0027,"},{"line_number":79,"context_line":"                       description\u003d\u0027Retrieve device records\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_472597aa","line":76,"in_reply_to":"9fdfeff1_360e878d","updated":"2019-01-24 14:59:42.000000000","message":"+1 to wangzhh. It is better to minimize the #APIs we export in Stein; each of them needs to be backwards compatible and is a baggage we have to carry. I would recommend defining as few APIs as possible to get a minimum viable interface and then use operator feedback to define more as necessary.","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"5268d5aa918a57b043baa75c3e5821e08faedbcd","unresolved":false,"context_lines":[{"line_number":73,"context_line":"#       All of these may be overridden by configuration, but we can"},{"line_number":74,"context_line":"#       depend on their existence throughout the code."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"device_policies \u003d ["},{"line_number":77,"context_line":"    policy.RuleDefault(\u0027cyborg:device:get\u0027,"},{"line_number":78,"context_line":"                       \u0027rule:default\u0027,"},{"line_number":79,"context_line":"                       description\u003d\u0027Retrieve device records\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_bed689f1","line":76,"in_reply_to":"9fdfeff1_360e878d","updated":"2019-02-14 06:36:30.000000000","message":"Done","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"5268d5aa918a57b043baa75c3e5821e08faedbcd","unresolved":false,"context_lines":[{"line_number":73,"context_line":"#       All of these may be overridden by configuration, but we can"},{"line_number":74,"context_line":"#       depend on their existence throughout the code."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"device_policies \u003d ["},{"line_number":77,"context_line":"    policy.RuleDefault(\u0027cyborg:device:get\u0027,"},{"line_number":78,"context_line":"                       \u0027rule:default\u0027,"},{"line_number":79,"context_line":"                       description\u003d\u0027Retrieve device records\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_ded34d00","line":76,"in_reply_to":"9fdfeff1_472597aa","updated":"2019-02-14 06:36:30.000000000","message":"Done","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"e4df06e807ea0036b6354f28a23b11636abb31b6","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                       description\u003d\u0027Update accelerator records\u0027),"},{"line_number":89,"context_line":"]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"deployable_policies \u003d ["},{"line_number":93,"context_line":"    policy.RuleDefault(\u0027cyborg:deployable:get_one\u0027,"},{"line_number":94,"context_line":"                       \u0027rule:allow\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_5d593633","line":91,"updated":"2019-02-19 06:34:31.000000000","message":"Pls remove the empty line.","commit_id":"d5e974c359c535072e65f0b3bc5e26346bce8304"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"ab2189499a72a4e614f59b9674baf3872eb6aee2","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                       description\u003d\u0027Update accelerator records\u0027),"},{"line_number":89,"context_line":"]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"deployable_policies \u003d ["},{"line_number":93,"context_line":"    policy.RuleDefault(\u0027cyborg:deployable:get_one\u0027,"},{"line_number":94,"context_line":"                       \u0027rule:allow\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_a425aeb0","line":91,"in_reply_to":"9fdfeff1_5d593633","updated":"2019-02-19 08:48:55.000000000","message":"Done","commit_id":"d5e974c359c535072e65f0b3bc5e26346bce8304"}],"cyborg/db/sqlalchemy/api.py":[{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"c8340ac7d4695ba98b9ff56fe85e3b11442fd7ed","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        return _paginate_query(context, models.Device, limit, marker,"},{"line_number":382,"context_line":"                               sort_key, sort_dir, query_prefix)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    def device_list(self, context):"},{"line_number":385,"context_line":"        query \u003d model_query(context, models.Device)"},{"line_number":386,"context_line":"        return _paginate_query(context, models.Device)"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_d6c4db61","line":384,"updated":"2019-01-24 12:46:18.000000000","message":"What\u0027s the usage of query here?","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"57f5ba14eb87e624cb9b6fa943a5abe0718bfd04","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        return _paginate_query(context, models.Device, limit, marker,"},{"line_number":382,"context_line":"                               sort_key, sort_dir, query_prefix)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    def device_list(self, context):"},{"line_number":385,"context_line":"        query \u003d model_query(context, models.Device)"},{"line_number":386,"context_line":"        return _paginate_query(context, models.Device)"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_201b8f81","line":384,"in_reply_to":"9fdfeff1_d6c4db61","updated":"2019-01-25 05:45:59.000000000","message":"If list device without filters will query here!","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"c8340ac7d4695ba98b9ff56fe85e3b11442fd7ed","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                               sort_key, sort_dir, query_prefix)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def device_profile_list(self, context):"},{"line_number":474,"context_line":"        query \u003d model_query(context, models.DeviceProfile)"},{"line_number":475,"context_line":"        return _paginate_query(context, models.DeviceProfile)"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def device_profile_update(self, context, uuid, values):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_56aeab98","line":474,"updated":"2019-01-24 12:46:18.000000000","message":"Same as line 384.","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"}],"cyborg/tests/unit/db/utils.py":[{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"be358063181aaf746592e256a20ebd95ea06b4ec","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    return {"},{"line_number":72,"context_line":"        \u0027uuid\u0027: kw.get(\u0027uuid\u0027, \u0027c0f43d55-03bf-4831-8639-9bbdb6be2478\u0027),"},{"line_number":73,"context_line":"        \u0027name\u0027: kw.get(\u0027name\u0027, \u0027name\u0027),"},{"line_number":74,"context_line":"        \u0027profile_json\u0027: kw.get(\u0027profile_json\u0027, \u0027{\"version\": 1.0,"},{"line_number":75,"context_line":"                               \"groups\": ["},{"line_number":76,"context_line":"                                   {\"resources:CUSTOM_ACCELERATOR_FPGA\": \"1\","},{"line_number":77,"context_line":"                                    {\"trait:CUSTOM_FPGA_INTEL_PAC_ARRIA10\":"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_21945044","line":74,"range":{"start_line":74,"start_character":60,"end_line":74,"end_character":63},"updated":"2019-01-21 03:29:16.000000000","message":"please fix the syntax error here to pass the py27 test. :)","commit_id":"3e972d64df0eef0c3ddf402b3bd9a059e53d426b"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"6662f048af0512bdde297217c72730605bc10371","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def get_test_device(**kw):"},{"line_number":79,"context_line":"    return {"},{"line_number":80,"context_line":"        \u0027id\u0027: kw.get(\u0027id\u0027, 1),"},{"line_number":81,"context_line":"        \u0027uuid\u0027: kw.get(\u0027uuid\u0027, \u002783f92afa-1aa8-4548-a3a3-d218ff71d768\u0027),"},{"line_number":82,"context_line":"        \u0027type\u0027: kw.get(\u0027type\u0027, \u00271.0\u0027),"},{"line_number":83,"context_line":"        \u0027vendor\u0027: kw.get(\u0027vendor\u0027, \u0027Intel\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_c0b10749","line":80,"updated":"2019-01-31 02:45:11.000000000","message":"What if id and the other keys are not in the kwargs?","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"5268d5aa918a57b043baa75c3e5821e08faedbcd","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def get_test_device(**kw):"},{"line_number":79,"context_line":"    return {"},{"line_number":80,"context_line":"        \u0027id\u0027: kw.get(\u0027id\u0027, 1),"},{"line_number":81,"context_line":"        \u0027uuid\u0027: kw.get(\u0027uuid\u0027, \u002783f92afa-1aa8-4548-a3a3-d218ff71d768\u0027),"},{"line_number":82,"context_line":"        \u0027type\u0027: kw.get(\u0027type\u0027, \u00271.0\u0027),"},{"line_number":83,"context_line":"        \u0027vendor\u0027: kw.get(\u0027vendor\u0027, \u0027Intel\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_4f86b2bb","line":80,"in_reply_to":"9fdfeff1_c0b10749","updated":"2019-02-14 06:36:30.000000000","message":"Ummm... IMHO, for the unit test, since we use dict.get(key[, default]) to assign default values here, the situation you mentioned won\u0027t affect the unit test results.","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"6662f048af0512bdde297217c72730605bc10371","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def get_test_device_profile(**kw):"},{"line_number":98,"context_line":"    return {"},{"line_number":99,"context_line":"        \u0027id\u0027: kw.get(\u0027id\u0027, 1),"},{"line_number":100,"context_line":"        \u0027uuid\u0027: kw.get(\u0027uuid\u0027, \u0027c0f43d55-03bf-4831-8639-9bbdb6be2478\u0027),"},{"line_number":101,"context_line":"        \u0027name\u0027: kw.get(\u0027name\u0027, \u0027name\u0027),"},{"line_number":102,"context_line":"        \u0027profile_json\u0027: kw.get("}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_80b77f3a","line":99,"updated":"2019-01-31 02:45:11.000000000","message":"Same comment as above","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"5268d5aa918a57b043baa75c3e5821e08faedbcd","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def get_test_device_profile(**kw):"},{"line_number":98,"context_line":"    return {"},{"line_number":99,"context_line":"        \u0027id\u0027: kw.get(\u0027id\u0027, 1),"},{"line_number":100,"context_line":"        \u0027uuid\u0027: kw.get(\u0027uuid\u0027, \u0027c0f43d55-03bf-4831-8639-9bbdb6be2478\u0027),"},{"line_number":101,"context_line":"        \u0027name\u0027: kw.get(\u0027name\u0027, \u0027name\u0027),"},{"line_number":102,"context_line":"        \u0027profile_json\u0027: kw.get("}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_0f8c2ad5","line":99,"in_reply_to":"9fdfeff1_80b77f3a","updated":"2019-02-14 06:36:30.000000000","message":"ditto","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"}],"cyborg/tests/unit/objects/test_device_profile.py":[{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"6662f048af0512bdde297217c72730605bc10371","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        with mock.patch.object(self.dbapi, \u0027device_profile_get_by_uuid\u0027,"},{"line_number":71,"context_line":"                               autospec\u003dTrue) as mock_device_profile_get:"},{"line_number":72,"context_line":"            mock_device_profile_get.return_value \u003d self.fake_device_profile"},{"line_number":73,"context_line":"            with mock.patch.object(self.dbapi, \u0027device_profile_delete\u0027,"},{"line_number":74,"context_line":"                                   autospec\u003dTrue) as m_device_profile_delete:"},{"line_number":75,"context_line":"                device_profile \u003d objects.DeviceProfile.get(self.context, uuid)"},{"line_number":76,"context_line":"                device_profile.destroy(self.context)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_60effb1d","line":73,"updated":"2019-01-31 02:45:11.000000000","message":"Please use decorators instead of nested with mock.patch.pbjects...","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"5268d5aa918a57b043baa75c3e5821e08faedbcd","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        with mock.patch.object(self.dbapi, \u0027device_profile_get_by_uuid\u0027,"},{"line_number":71,"context_line":"                               autospec\u003dTrue) as mock_device_profile_get:"},{"line_number":72,"context_line":"            mock_device_profile_get.return_value \u003d self.fake_device_profile"},{"line_number":73,"context_line":"            with mock.patch.object(self.dbapi, \u0027device_profile_delete\u0027,"},{"line_number":74,"context_line":"                                   autospec\u003dTrue) as m_device_profile_delete:"},{"line_number":75,"context_line":"                device_profile \u003d objects.DeviceProfile.get(self.context, uuid)"},{"line_number":76,"context_line":"                device_profile.destroy(self.context)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_0f70aa07","line":73,"in_reply_to":"9fdfeff1_60effb1d","updated":"2019-02-14 06:36:30.000000000","message":"Thx Rushi for your review. We will consider update later, but now we want all related patches to get merged asap before the end of this release.","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"6662f048af0512bdde297217c72730605bc10371","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def test_update(self):"},{"line_number":82,"context_line":"        uuid \u003d self.fake_device_profile[\u0027uuid\u0027]"},{"line_number":83,"context_line":"        with mock.patch.object(self.dbapi, \u0027device_profile_get_by_uuid\u0027,"},{"line_number":84,"context_line":"                               autospec\u003dTrue) as mock_device_profile_get:"},{"line_number":85,"context_line":"            mock_device_profile_get.return_value \u003d self.fake_device_profile"},{"line_number":86,"context_line":"            with mock.patch.object(self.dbapi, \u0027device_profile_update\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_a08ba365","line":83,"updated":"2019-01-31 02:45:11.000000000","message":"Please use decorators instead of nested with mock.patch.pbjects...","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"5268d5aa918a57b043baa75c3e5821e08faedbcd","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def test_update(self):"},{"line_number":82,"context_line":"        uuid \u003d self.fake_device_profile[\u0027uuid\u0027]"},{"line_number":83,"context_line":"        with mock.patch.object(self.dbapi, \u0027device_profile_get_by_uuid\u0027,"},{"line_number":84,"context_line":"                               autospec\u003dTrue) as mock_device_profile_get:"},{"line_number":85,"context_line":"            mock_device_profile_get.return_value \u003d self.fake_device_profile"},{"line_number":86,"context_line":"            with mock.patch.object(self.dbapi, \u0027device_profile_update\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_cf67024d","line":83,"in_reply_to":"9fdfeff1_a08ba365","updated":"2019-02-14 06:36:30.000000000","message":"ditto","commit_id":"200d883cedd8782de6168cec0935d08622bc6db8"}]}
