)]}'
{"cyborg/tests/unit/policies/base.py":[{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"608f7a317acd7b705ac7304a4dad447c22d8c41c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9f560f44_bdb73a21","updated":"2020-09-11 00:42:29.000000000","message":"you may miss `system_admin_or_owner` and `system_or_project_reader`.","commit_id":"1b703a81a450a1f46a1d0b2802da480829c112ad"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"8f4225d57f7319927abbf0c3ea6307f621a123fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9f560f44_ce1ea75d","in_reply_to":"9f560f44_bdb73a21","updated":"2020-09-11 06:01:07.000000000","message":"not miss, no need to add here. \n\u0027system_admin_or_owner\u0027 is the rule for accessing an API, it means either a user system_admin or a user owner can successfully pass the policy check for this API.\nhere in the setUp() of BasePolicyTest(), we need to define all the possible users. system_admin is a user, the owner is a user, but there is no user who can be \u0027system_admin_or_owner\u0027,that\u0027s actually two users.","commit_id":"1b703a81a450a1f46a1d0b2802da480829c112ad"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"608f7a317acd7b705ac7304a4dad447c22d8c41c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        # legacy default role: \"default:admin_or_owner\""},{"line_number":39,"context_line":"        self.legacy_admin_context \u003d cyborg_context.RequestContext("},{"line_number":40,"context_line":"            user_id\u003d\"legacy_admin\", project_id\u003dself.admin_project_id,"},{"line_number":41,"context_line":"            roles\u003d\u0027admin\u0027)"},{"line_number":42,"context_line":"        self.legacy_owner_context \u003d cyborg_context.RequestContext("},{"line_number":43,"context_line":"            user_id\u003d\"legacy_owner\", project_id\u003dself.admin_project_id,"},{"line_number":44,"context_line":"            roles\u003d\u0027member\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_6ca85a8b","line":41,"range":{"start_line":41,"start_character":19,"end_line":41,"end_character":24},"updated":"2020-09-11 00:42:29.000000000","message":"Here also need to comment why this is \u0027admin\u0027 instead of \u0027admin_or_owner\u0027.","commit_id":"1b703a81a450a1f46a1d0b2802da480829c112ad"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"8f4225d57f7319927abbf0c3ea6307f621a123fd","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        # legacy default role: \"default:admin_or_owner\""},{"line_number":39,"context_line":"        self.legacy_admin_context \u003d cyborg_context.RequestContext("},{"line_number":40,"context_line":"            user_id\u003d\"legacy_admin\", project_id\u003dself.admin_project_id,"},{"line_number":41,"context_line":"            roles\u003d\u0027admin\u0027)"},{"line_number":42,"context_line":"        self.legacy_owner_context \u003d cyborg_context.RequestContext("},{"line_number":43,"context_line":"            user_id\u003d\"legacy_owner\", project_id\u003dself.admin_project_id,"},{"line_number":44,"context_line":"            roles\u003d\u0027member\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_cb37b9fd","line":41,"range":{"start_line":41,"start_character":19,"end_line":41,"end_character":24},"in_reply_to":"9f560f44_6ca85a8b","updated":"2020-09-11 06:01:07.000000000","message":"no need to do so.\"admin_or_owner\" means admin or owner (OrCheck for two roles), there is no role called admin_or_owner.","commit_id":"1b703a81a450a1f46a1d0b2802da480829c112ad"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"06ba438882f39155d5ef003d2303ca1f463cefc9","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cyborg.tests.unit import policy_fixture"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class BasePolicyTest(v2_test.APITestV2):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_d9067486","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":33},"updated":"2020-09-11 04:00:01.000000000","message":"This defines not be used","commit_id":"f42ec8d251dbcb1c718424c4119e6d7a5c9a39ed"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"2274ac99699fc4df66e41d9ad7e5fabc2312e3bd","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cyborg.tests.unit import policy_fixture"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class BasePolicyTest(v2_test.APITestV2):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_dfef6f1a","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":33},"in_reply_to":"9f560f44_d9067486","updated":"2020-09-11 09:58:09.000000000","message":"ok. as long as we don\u0027t have other key issues, what about updating this in the next ARQ policy patch(as a \u0027by the way\u0027 update)? update in this patch will need extra review.","commit_id":"f42ec8d251dbcb1c718424c4119e6d7a5c9a39ed"}],"cyborg/tests/unit/policies/test_device_profiles.py":[{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"52be9b5c45d8c0dbb96f9e2a1863bb6f7c82357d","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class DeviceProfilePolicyTest(base.BasePolicyTest):"},{"line_number":33,"context_line":"    \"\"\"Test device_profile APIs policies with all possible context."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    This class defines the set of context with different roles"},{"line_number":36,"context_line":"    which are allowed and not allowed to pass the policy checks."}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_5b53bc16","line":33,"range":{"start_line":33,"start_character":59,"end_line":33,"end_character":66},"updated":"2020-09-08 09:53:22.000000000","message":"contexts.","commit_id":"407b96603ad01cb89c29302a8cbfc3eb308534e7"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"3cab23ec944e9520a2bfc04d26f43b8da6c213b3","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class DeviceProfilePolicyTest(base.BasePolicyTest):"},{"line_number":33,"context_line":"    \"\"\"Test device_profile APIs policies with all possible context."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    This class defines the set of context with different roles"},{"line_number":36,"context_line":"    which are allowed and not allowed to pass the policy checks."}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_ee2e22f8","line":33,"range":{"start_line":33,"start_character":59,"end_line":33,"end_character":66},"in_reply_to":"9f560f44_5b53bc16","updated":"2020-09-10 09:17:40.000000000","message":"Done","commit_id":"407b96603ad01cb89c29302a8cbfc3eb308534e7"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"52be9b5c45d8c0dbb96f9e2a1863bb6f7c82357d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    def test_authorized_create_device_profile(self, mock_cond_dp):"},{"line_number":91,"context_line":"        mock_cond_dp.return_value \u003d self.fake_dp_objs[0]"},{"line_number":92,"context_line":"        dp \u003d [self.fake_dps[0]]"},{"line_number":93,"context_line":"        dp[0][\u0027created_at\u0027] \u003d str(dp[0][\u0027created_at\u0027])"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        for context in self.create_authorized_contexts:"},{"line_number":96,"context_line":"            headers \u003d self.gen_headers(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_fb88d071","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":54},"updated":"2020-09-08 09:53:22.000000000","message":"Can we remove this field in fake dev_profile so that we can ignore the assert this field next.","commit_id":"407b96603ad01cb89c29302a8cbfc3eb308534e7"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"3cab23ec944e9520a2bfc04d26f43b8da6c213b3","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    def test_authorized_create_device_profile(self, mock_cond_dp):"},{"line_number":91,"context_line":"        mock_cond_dp.return_value \u003d self.fake_dp_objs[0]"},{"line_number":92,"context_line":"        dp \u003d [self.fake_dps[0]]"},{"line_number":93,"context_line":"        dp[0][\u0027created_at\u0027] \u003d str(dp[0][\u0027created_at\u0027])"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        for context in self.create_authorized_contexts:"},{"line_number":96,"context_line":"            headers \u003d self.gen_headers(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_8edb26eb","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":54},"in_reply_to":"9f560f44_fb88d071","updated":"2020-09-10 09:17:40.000000000","message":"Looks like it can be removed. But I\u0027m not sure if it\u0027s intentional. But the fact is if we remove this in fake dev_profile, we may also need to update all its references, which might affect a wide range.\nhttps://github.com/openstack/cyborg/search?q\u003dfake_device_profile\u0026unscoped_q\u003dfake_device_profile","commit_id":"407b96603ad01cb89c29302a8cbfc3eb308534e7"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"128f877a90dbdbb8ae8d45aa233b45ac3bdb282c","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            response \u003d self.delete(url, headers\u003dheaders)"},{"line_number":128,"context_line":"            self.assertEqual(http_client.NO_CONTENT, response.status_int)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def test_unauthorized_delete_device_profile(self):"},{"line_number":131,"context_line":"        dp \u003d self.fake_dp_objs[0]"},{"line_number":132,"context_line":"        url \u003d DP_URL + \u0027/%s\u0027"},{"line_number":133,"context_line":"        exc \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_00e26330","line":130,"updated":"2020-09-09 01:10:12.000000000","message":"It\u0027s better to be test_delete_device_profile_forbidden, unauthorized should respond with code 401.","commit_id":"407b96603ad01cb89c29302a8cbfc3eb308534e7"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"3cab23ec944e9520a2bfc04d26f43b8da6c213b3","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            response \u003d self.delete(url, headers\u003dheaders)"},{"line_number":128,"context_line":"            self.assertEqual(http_client.NO_CONTENT, response.status_int)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def test_unauthorized_delete_device_profile(self):"},{"line_number":131,"context_line":"        dp \u003d self.fake_dp_objs[0]"},{"line_number":132,"context_line":"        url \u003d DP_URL + \u0027/%s\u0027"},{"line_number":133,"context_line":"        exc \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_ae26eac9","line":130,"in_reply_to":"9f560f44_00e26330","updated":"2020-09-10 09:17:40.000000000","message":"Done","commit_id":"407b96603ad01cb89c29302a8cbfc3eb308534e7"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"608f7a317acd7b705ac7304a4dad447c22d8c41c","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class DeviceProfilePolicyTest(base.BasePolicyTest):"},{"line_number":33,"context_line":"    \"\"\"Test device_profile APIs policies with all possible contexts."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    This class defines the set of context with different roles"},{"line_number":36,"context_line":"    which are allowed and not allowed to pass the policy checks."},{"line_number":37,"context_line":"    With those set of context, it will call the API operation and"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_111bb780","line":34,"range":{"start_line":34,"start_character":0,"end_line":34,"end_character":0},"updated":"2020-09-11 00:42:29.000000000","message":"Extra blank line.","commit_id":"1b703a81a450a1f46a1d0b2802da480829c112ad"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"608f7a317acd7b705ac7304a4dad447c22d8c41c","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            try:"},{"line_number":109,"context_line":"                self.post_json(DP_URL, dp, headers\u003dheaders)"},{"line_number":110,"context_line":"            except Exception as e:"},{"line_number":111,"context_line":"                exc \u003d e"},{"line_number":112,"context_line":"            self.assertIn(\"Bad response: 403 Forbidden\", exc.args[0])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @mock.patch(\u0027cyborg.conductor.rpcapi.ConductorAPI.device_profile_delete\u0027)"},{"line_number":115,"context_line":"    @mock.patch(\u0027cyborg.objects.DeviceProfile.get_by_name\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_51b52f7d","line":112,"range":{"start_line":111,"start_character":0,"end_line":112,"end_character":69},"updated":"2020-09-11 00:42:29.000000000","message":"self.assertIn(\"Bad response: 403 Forbidden\", e.args[0])","commit_id":"1b703a81a450a1f46a1d0b2802da480829c112ad"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"307494f2684ab99a931360184a177b3effbf3702","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    @mock.patch(\u0027cyborg.objects.DeviceProfile.get_by_name\u0027)"},{"line_number":116,"context_line":"    @mock.patch(\u0027cyborg.objects.DeviceProfile.get_by_uuid\u0027)"},{"line_number":117,"context_line":"    def test_delete_device_profile_success(self, mock_dp_uuid,"},{"line_number":118,"context_line":"                                              mock_dp_name, mock_cond_del):"},{"line_number":119,"context_line":"        for context in self.delete_authorized_contexts:"},{"line_number":120,"context_line":"            headers \u003d self.gen_headers(context)"},{"line_number":121,"context_line":"            # Delete by UUID"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_f198c31b","line":118,"updated":"2020-09-10 09:55:58.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"1b703a81a450a1f46a1d0b2802da480829c112ad"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"608f7a317acd7b705ac7304a4dad447c22d8c41c","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            self.assertEqual(http_client.NO_CONTENT, response.status_int)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def test_delete_device_profile_forbidden(self):"},{"line_number":131,"context_line":"        dp \u003d self.fake_dp_objs[0]"},{"line_number":132,"context_line":"        url \u003d DP_URL + \u0027/%s\u0027"},{"line_number":133,"context_line":"        exc \u003d None"},{"line_number":134,"context_line":"        for context in self.delete_unauthorized_contexts:"},{"line_number":135,"context_line":"            headers \u003d self.gen_headers(context)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_d1c2df33","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":28},"updated":"2020-09-11 00:42:29.000000000","message":"Why not do same as L122?","commit_id":"1b703a81a450a1f46a1d0b2802da480829c112ad"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"608f7a317acd7b705ac7304a4dad447c22d8c41c","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            try:"},{"line_number":137,"context_line":"                self.delete(url % dp[\u0027uuid\u0027], headers\u003dheaders)"},{"line_number":138,"context_line":"            except Exception as e:"},{"line_number":139,"context_line":"                exc \u003d e"},{"line_number":140,"context_line":"            self.assertIn(\"Bad response: 403 Forbidden\", exc.args[0])"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class DeviceProfileScopeTypePolicyTest(DeviceProfilePolicyTest):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_71add32f","line":140,"range":{"start_line":139,"start_character":0,"end_line":140,"end_character":69},"updated":"2020-09-11 00:42:29.000000000","message":"ditto","commit_id":"1b703a81a450a1f46a1d0b2802da480829c112ad"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"608f7a317acd7b705ac7304a4dad447c22d8c41c","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            self.assertIn(\"Bad response: 403 Forbidden\", exc.args[0])"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class DeviceProfileScopeTypePolicyTest(DeviceProfilePolicyTest):"},{"line_number":144,"context_line":"    \"\"\"Test device_profile APIs policies with system scope enabled."},{"line_number":145,"context_line":"    This class set the cyborg.conf [oslo_policy] enforce_scope to True"},{"line_number":146,"context_line":"    so that we can switch on the scope checking on oslo policy side."},{"line_number":147,"context_line":"    It defines the set of context with scoped token"},{"line_number":148,"context_line":"    which are allowed and not allowed to pass the policy checks."},{"line_number":149,"context_line":"    With those set of context, it will run the API operation and"},{"line_number":150,"context_line":"    verify the expected behaviour."},{"line_number":151,"context_line":"    \"\"\""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def setUp(self):"},{"line_number":154,"context_line":"        super(DeviceProfileScopeTypePolicyTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_ccb08643","line":154,"range":{"start_line":143,"start_character":0,"end_line":154,"end_character":61},"updated":"2020-09-11 00:42:29.000000000","message":"nits: This test set enforce_scope to True? and run create and delete dp tests with enforce_scope?","commit_id":"1b703a81a450a1f46a1d0b2802da480829c112ad"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"8f4225d57f7319927abbf0c3ea6307f621a123fd","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            self.assertIn(\"Bad response: 403 Forbidden\", exc.args[0])"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class DeviceProfileScopeTypePolicyTest(DeviceProfilePolicyTest):"},{"line_number":144,"context_line":"    \"\"\"Test device_profile APIs policies with system scope enabled."},{"line_number":145,"context_line":"    This class set the cyborg.conf [oslo_policy] enforce_scope to True"},{"line_number":146,"context_line":"    so that we can switch on the scope checking on oslo policy side."},{"line_number":147,"context_line":"    It defines the set of context with scoped token"},{"line_number":148,"context_line":"    which are allowed and not allowed to pass the policy checks."},{"line_number":149,"context_line":"    With those set of context, it will run the API operation and"},{"line_number":150,"context_line":"    verify the expected behaviour."},{"line_number":151,"context_line":"    \"\"\""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def setUp(self):"},{"line_number":154,"context_line":"        super(DeviceProfileScopeTypePolicyTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_ab5b6583","line":154,"range":{"start_line":143,"start_character":0,"end_line":154,"end_character":61},"in_reply_to":"9f560f44_ccb08643","updated":"2020-09-11 06:01:07.000000000","message":"no need here. we cannot set enforce_scope\u003dTrue until we actually introduce the scope_type.","commit_id":"1b703a81a450a1f46a1d0b2802da480829c112ad"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"1d96e771e562a4f2a73d3e7971cfacf7added04d","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            self.assertIn(\"Bad response: 403 Forbidden\", exc.args[0])"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class DeviceProfileScopeTypePolicyTest(DeviceProfilePolicyTest):"},{"line_number":144,"context_line":"    \"\"\"Test device_profile APIs policies with system scope enabled."},{"line_number":145,"context_line":"    This class set the cyborg.conf [oslo_policy] enforce_scope to True"},{"line_number":146,"context_line":"    so that we can switch on the scope checking on oslo policy side."},{"line_number":147,"context_line":"    It defines the set of context with scoped token"},{"line_number":148,"context_line":"    which are allowed and not allowed to pass the policy checks."},{"line_number":149,"context_line":"    With those set of context, it will run the API operation and"},{"line_number":150,"context_line":"    verify the expected behaviour."},{"line_number":151,"context_line":"    \"\"\""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def setUp(self):"},{"line_number":154,"context_line":"        super(DeviceProfileScopeTypePolicyTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_afd6d225","line":154,"range":{"start_line":143,"start_character":0,"end_line":154,"end_character":61},"in_reply_to":"9f560f44_ccb08643","updated":"2020-09-11 08:41:37.000000000","message":"you added in next patch, sorry.","commit_id":"1b703a81a450a1f46a1d0b2802da480829c112ad"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"06ba438882f39155d5ef003d2303ca1f463cefc9","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cyborg.tests.unit.policies import base"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"DP_URL \u003d \u0027/device_profiles\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_3968501f","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":33},"updated":"2020-09-11 04:00:01.000000000","message":"ditto","commit_id":"f42ec8d251dbcb1c718424c4119e6d7a5c9a39ed"}]}
