)]}'
{"cyborg/db/sqlalchemy/api.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"434444164d50364be52a4a3a38c6b6ec92b77b55","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        :param legal_keys: list of keys to apply exact filtering to"},{"line_number":212,"context_line":"        \"\"\""},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        if filters is None:"},{"line_number":215,"context_line":"            filters \u003d {}"},{"line_number":216,"context_line":"        if legal_keys is None:"},{"line_number":217,"context_line":"            legal_keys \u003d []"},{"line_number":218,"context_line":"        filter_dict \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_ef7f8a13","line":215,"range":{"start_line":214,"start_character":0,"end_line":215,"end_character":24},"updated":"2020-02-08 06:41:39.000000000","message":"you should rebase this patch on https://review.opendev.org/#/c/703049/1","commit_id":"ab329d89c3f8a42ad06904ea71b49b4b4bd91474"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"af4aa84454c068c4b4831b5a659beff1307a86ad","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        :param legal_keys: list of keys to apply exact filtering to"},{"line_number":212,"context_line":"        \"\"\""},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        if filters is None:"},{"line_number":215,"context_line":"            filters \u003d {}"},{"line_number":216,"context_line":"        if legal_keys is None:"},{"line_number":217,"context_line":"            legal_keys \u003d []"},{"line_number":218,"context_line":"        filter_dict \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_ec3c71eb","line":215,"range":{"start_line":214,"start_character":0,"end_line":215,"end_character":24},"in_reply_to":"3fa7e38b_ef7f8a13","updated":"2020-02-10 02:31:29.000000000","message":"Done","commit_id":"ab329d89c3f8a42ad06904ea71b49b4b4bd91474"}],"cyborg/tests/unit/db/test_db_attach_handle.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"fd37a8fd8d8a84620e5c3a677b0478aa15566c3a","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            attach_type\u003d\u0027TEST_PCI\u0027)"},{"line_number":68,"context_line":"        res \u003d self.dbapi.attach_handle_list_by_type("},{"line_number":69,"context_line":"            self.context, attach_type\u003d\u0027PCI\u0027)"},{"line_number":70,"context_line":"        self.assertEqual([ah1[\u0027uuid\u0027]], [ah[\u0027uuid\u0027] for ah in res])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def test_get_by_filters(self):"},{"line_number":73,"context_line":"        ah1 \u003d utils.create_test_attach_handle("}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_da094edc","line":70,"range":{"start_line":70,"start_character":40,"end_line":70,"end_character":66},"updated":"2020-01-19 01:42:05.000000000","message":"nit: Here, the readability of the program is too poor, only one object is returned, and we can directly take the value. We can reduce the use of for loops if we can.\n\nI think we can use res[0][\u0027uuid\u0027] instead of the for iterator.","commit_id":"b33711d40194901e4c556598491402a88ecaef12"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"fa051fdf84127096b4676b7a877365fe848f19b5","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            attach_type\u003d\u0027TEST_PCI\u0027)"},{"line_number":68,"context_line":"        res \u003d self.dbapi.attach_handle_list_by_type("},{"line_number":69,"context_line":"            self.context, attach_type\u003d\u0027PCI\u0027)"},{"line_number":70,"context_line":"        self.assertEqual([ah1[\u0027uuid\u0027]], [ah[\u0027uuid\u0027] for ah in res])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def test_get_by_filters(self):"},{"line_number":73,"context_line":"        ah1 \u003d utils.create_test_attach_handle("}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_1a9cc66e","line":70,"range":{"start_line":70,"start_character":40,"end_line":70,"end_character":66},"in_reply_to":"3fa7e38b_da094edc","updated":"2020-01-19 01:56:00.000000000","message":"Good idea. Thanks. Will update.","commit_id":"b33711d40194901e4c556598491402a88ecaef12"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"4e886699200c3fed8a7a45b2897424811ea8b1ed","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            self.context, attach_type\u003d\u0027PCI\u0027)"},{"line_number":70,"context_line":"        self.assertEqual([ah1[\u0027uuid\u0027]], [ah[\u0027uuid\u0027] for ah in res])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def test_get_by_filters(self):"},{"line_number":73,"context_line":"        ah1 \u003d utils.create_test_attach_handle("},{"line_number":74,"context_line":"            self.context,"},{"line_number":75,"context_line":"            id\u003d1,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_17325fc1","line":72,"updated":"2020-01-18 17:35:32.000000000","message":"Can we add a test case that, if filters is not provided or is None, then the entire list is returned? That would need https://review.opendev.org/703049 .","commit_id":"b33711d40194901e4c556598491402a88ecaef12"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"d39d4b7668746fcbebc8eb7a60f988798037db7e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            self.context, attach_type\u003d\u0027PCI\u0027)"},{"line_number":70,"context_line":"        self.assertEqual([ah1[\u0027uuid\u0027]], [ah[\u0027uuid\u0027] for ah in res])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def test_get_by_filters(self):"},{"line_number":73,"context_line":"        ah1 \u003d utils.create_test_attach_handle("},{"line_number":74,"context_line":"            self.context,"},{"line_number":75,"context_line":"            id\u003d1,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_1ace068f","line":72,"in_reply_to":"3fa7e38b_17325fc1","updated":"2020-01-19 01:54:03.000000000","message":"Hi Sundar. I know brin\u0027s patch. We discuss by the irc about the filter \u003d None will raise error. His patch depends on this. I can\u0027t add None, but I can add filters \u003d {}. If we need to consider None, we should add to his patch.","commit_id":"b33711d40194901e4c556598491402a88ecaef12"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"7d54bbda6f1f05dd8ae36ea076129fd8efb76033","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            self.context, attach_type\u003d\u0027PCI\u0027)"},{"line_number":70,"context_line":"        self.assertEqual([ah1[\u0027uuid\u0027]], [ah[\u0027uuid\u0027] for ah in res])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def test_get_by_filters(self):"},{"line_number":73,"context_line":"        ah1 \u003d utils.create_test_attach_handle("},{"line_number":74,"context_line":"            self.context,"},{"line_number":75,"context_line":"            id\u003d1,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_9acbd649","line":72,"in_reply_to":"3fa7e38b_1ace068f","updated":"2020-01-19 02:07:21.000000000","message":"Emmm. I will add filter \u003d None testcase. Sorry for didn\u0027t see that patch is only for device profile instead of attach handle.","commit_id":"b33711d40194901e4c556598491402a88ecaef12"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"fd37a8fd8d8a84620e5c3a677b0478aa15566c3a","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            deployable_id\u003d2)"},{"line_number":83,"context_line":"        res \u003d self.dbapi.attach_handle_get_by_filters("},{"line_number":84,"context_line":"            self.context, filters\u003d{\"deployable_id\": 1})"},{"line_number":85,"context_line":"        self.assertEqual([ah1[\u0027uuid\u0027]], [ah[\u0027uuid\u0027] for ah in res])"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_allocate(self):"},{"line_number":88,"context_line":"        utils.create_test_attach_handle("}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_9a1c3615","line":85,"range":{"start_line":85,"start_character":40,"end_line":85,"end_character":66},"updated":"2020-01-19 01:42:05.000000000","message":"ditto","commit_id":"b33711d40194901e4c556598491402a88ecaef12"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"434444164d50364be52a4a3a38c6b6ec92b77b55","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            created_ah[\u0027uuid\u0027])"},{"line_number":110,"context_line":"        self.assertIsNone(return_value)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_list_filter_is_none(self):"},{"line_number":113,"context_line":"        \"\"\"The main test is filters\u003dNone. If filters\u003dNone,"},{"line_number":114,"context_line":"        it will be initialized to {}, that will return all attach"},{"line_number":115,"context_line":"        handle same as the List Attach Handle API response."},{"line_number":116,"context_line":"        \"\"\""},{"line_number":117,"context_line":"        ah1 \u003d utils.create_test_attach_handle("},{"line_number":118,"context_line":"            self.context,"},{"line_number":119,"context_line":"            id\u003d1,"},{"line_number":120,"context_line":"            uuid\u003duuidutils.generate_uuid())"},{"line_number":121,"context_line":"        res \u003d self.dbapi.attach_handle_get_by_filters("},{"line_number":122,"context_line":"            self.context, filters\u003dNone)"},{"line_number":123,"context_line":"        self.assertEqual(1, len(res))"},{"line_number":124,"context_line":"        self.assertEqual(ah1[\u0027uuid\u0027], res[0][\u0027uuid\u0027])"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def test_get_by_uuid_not_exist(self):"},{"line_number":127,"context_line":"        random_uuid \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_8f78562c","line":124,"range":{"start_line":112,"start_character":0,"end_line":124,"end_character":53},"updated":"2020-02-08 06:41:39.000000000","message":"ditto.","commit_id":"ab329d89c3f8a42ad06904ea71b49b4b4bd91474"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"af4aa84454c068c4b4831b5a659beff1307a86ad","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            created_ah[\u0027uuid\u0027])"},{"line_number":110,"context_line":"        self.assertIsNone(return_value)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_list_filter_is_none(self):"},{"line_number":113,"context_line":"        \"\"\"The main test is filters\u003dNone. If filters\u003dNone,"},{"line_number":114,"context_line":"        it will be initialized to {}, that will return all attach"},{"line_number":115,"context_line":"        handle same as the List Attach Handle API response."},{"line_number":116,"context_line":"        \"\"\""},{"line_number":117,"context_line":"        ah1 \u003d utils.create_test_attach_handle("},{"line_number":118,"context_line":"            self.context,"},{"line_number":119,"context_line":"            id\u003d1,"},{"line_number":120,"context_line":"            uuid\u003duuidutils.generate_uuid())"},{"line_number":121,"context_line":"        res \u003d self.dbapi.attach_handle_get_by_filters("},{"line_number":122,"context_line":"            self.context, filters\u003dNone)"},{"line_number":123,"context_line":"        self.assertEqual(1, len(res))"},{"line_number":124,"context_line":"        self.assertEqual(ah1[\u0027uuid\u0027], res[0][\u0027uuid\u0027])"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def test_get_by_uuid_not_exist(self):"},{"line_number":127,"context_line":"        random_uuid \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_6c7721d4","line":124,"range":{"start_line":112,"start_character":0,"end_line":124,"end_character":53},"in_reply_to":"3fa7e38b_8f78562c","updated":"2020-02-10 02:31:29.000000000","message":"Done","commit_id":"ab329d89c3f8a42ad06904ea71b49b4b4bd91474"}]}
