)]}'
{"karbor/common/karbor_keystone_plugin.py":[{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"29036b1cee1b593b80d0f6e74c71cd485657f42e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        self._service_auth_plugin \u003d auth_plugin"},{"line_number":69,"context_line":"        self._client \u003d self._get_keystone_client(auth_plugin)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        lcfg \u003d CONF[TRUSTEE_CONF_GROUP]"},{"line_number":72,"context_line":"        self._karbor_user_id \u003d self._get_service_user("},{"line_number":73,"context_line":"            lcfg.username, lcfg.user_domain_id)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_8ce7bbab","line":71,"range":{"start_line":71,"start_character":20,"end_line":71,"end_character":38},"updated":"2016-12-08 03:03:51.000000000","message":"I note that these five parameters in TRUSTEE_CONF_GROUP are all defined in config group \u0027[keystone_authtoken]\u0027. The values are same. Why do we need to repeatedly define these parameters here?","commit_id":"b9110c22755490e2c2ca27b4775d1f43c662745b"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"9ea7b4cd8991a1419d65953ae604cac12a0c4ae6","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        self._service_auth_plugin \u003d auth_plugin"},{"line_number":69,"context_line":"        self._client \u003d self._get_keystone_client(auth_plugin)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        lcfg \u003d CONF[TRUSTEE_CONF_GROUP]"},{"line_number":72,"context_line":"        self._karbor_user_id \u003d self._get_service_user("},{"line_number":73,"context_line":"            lcfg.username, lcfg.user_domain_id)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_78ba1270","line":71,"range":{"start_line":71,"start_character":20,"end_line":71,"end_character":38},"in_reply_to":"3a71b18c_8ce7bbab","updated":"2016-12-08 07:57:02.000000000","message":"you can see it will load a new authentication plugin using these config at line 155. maybe we need rethink your question. but IMO, it is not related to this patch. I will update it in another patch if necessary.","commit_id":"b9110c22755490e2c2ca27b4775d1f43c662745b"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"29036b1cee1b593b80d0f6e74c71cd485657f42e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            lcfg.username, lcfg.user_domain_id)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        try:"},{"line_number":76,"context_line":"            self._auth_uri \u003d utils.get_auth_uri()"},{"line_number":77,"context_line":"        except Exception:"},{"line_number":78,"context_line":"            msg \u003d \u0027get keystone auth url failed\u0027"},{"line_number":79,"context_line":"            raise exception.AuthorizationFailure(obj\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_e7e3e803","line":76,"range":{"start_line":76,"start_character":12,"end_line":76,"end_character":49},"updated":"2016-12-08 03:03:51.000000000","message":"The keystone auth uri also is defined in a new config group section \u0027clients_keystone\u0027. Why do we get it from \u0027keystone_authtoken\u0027 cinfog section?","commit_id":"b9110c22755490e2c2ca27b4775d1f43c662745b"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"9ea7b4cd8991a1419d65953ae604cac12a0c4ae6","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            lcfg.username, lcfg.user_domain_id)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        try:"},{"line_number":76,"context_line":"            self._auth_uri \u003d utils.get_auth_uri()"},{"line_number":77,"context_line":"        except Exception:"},{"line_number":78,"context_line":"            msg \u003d \u0027get keystone auth url failed\u0027"},{"line_number":79,"context_line":"            raise exception.AuthorizationFailure(obj\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_f34ac354","line":76,"range":{"start_line":76,"start_character":12,"end_line":76,"end_character":49},"in_reply_to":"3a71b18c_e7e3e803","updated":"2016-12-08 07:57:02.000000000","message":"ditto.","commit_id":"b9110c22755490e2c2ca27b4775d1f43c662745b"}],"karbor/services/protection/client_factory.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"cb363dc48dfded181e3c25f35a3695df6c6f969e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        if module is None:"},{"line_number":79,"context_line":"            raise exception.KarborException(_(\u0027Unknown service(%s)\u0027) % service)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        kwargs[\u0027keystone_plugin\u0027] \u003d cls._keystone_plugin"},{"line_number":82,"context_line":"        kwargs[\u0027session\u0027] \u003d cls._generate_session(context, service)"},{"line_number":83,"context_line":"        return module.create(context, conf, **kwargs)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_05eed2b3","line":82,"range":{"start_line":81,"start_character":0,"end_line":82,"end_character":67},"updated":"2017-01-11 11:36:54.000000000","message":"what if the kwargs don\u0027t include these entries?","commit_id":"c053533a41865581a9db6cf9c323d3f6f069c386"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"101605635a25808ed2ca308ffc06a92538460b1e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        if module is None:"},{"line_number":79,"context_line":"            raise exception.KarborException(_(\u0027Unknown service(%s)\u0027) % service)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        kwargs[\u0027keystone_plugin\u0027] \u003d cls._keystone_plugin"},{"line_number":82,"context_line":"        kwargs[\u0027session\u0027] \u003d cls._generate_session(context, service)"},{"line_number":83,"context_line":"        return module.create(context, conf, **kwargs)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_803009ea","line":82,"range":{"start_line":81,"start_character":0,"end_line":82,"end_character":67},"in_reply_to":"ba5201f7_05eed2b3","updated":"2017-01-16 09:23:33.000000000","message":"It will be same as before if kwargs[\u0027session\u0027] \u003d\u003d None.","commit_id":"c053533a41865581a9db6cf9c323d3f6f069c386"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"cb363dc48dfded181e3c25f35a3695df6c6f969e","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        return module.create(context, conf, **kwargs)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def init():"},{"line_number":87,"context_line":"    ClientFactory.init()"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_452e1afb","line":87,"range":{"start_line":86,"start_character":0,"end_line":87,"end_character":24},"updated":"2017-01-11 11:36:54.000000000","message":"why do we need this instead of the lazy init?","commit_id":"c053533a41865581a9db6cf9c323d3f6f069c386"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"101605635a25808ed2ca308ffc06a92538460b1e","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        return module.create(context, conf, **kwargs)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def init():"},{"line_number":87,"context_line":"    ClientFactory.init()"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_c0669128","line":87,"range":{"start_line":86,"start_character":0,"end_line":87,"end_character":24},"in_reply_to":"ba5201f7_452e1afb","updated":"2017-01-16 09:23:33.000000000","message":"I think there are at least two benefits. 1. All the clients will be loaded at last even if using lazy init. However there is a conflict when two tasks load the same client at the same time.\n2. It is not undesired that loading client failed during tasks run. But loading them at the beginning and successfully, it means that problem will not happen.","commit_id":"c053533a41865581a9db6cf9c323d3f6f069c386"}],"karbor/tests/unit/plugins/test_image_protectable_plugin.py":[{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"4f4d12b6d3f1643333e61fedc7b3698f0a0fbb87","unresolved":false,"context_lines":[{"line_number":34,"context_line":"class ImageProtectablePluginTest(base.TestCase):"},{"line_number":35,"context_line":"    def setUp(self):"},{"line_number":36,"context_line":"        super(ImageProtectablePluginTest, self).setUp()"},{"line_number":37,"context_line":"        cls \u003d client_factory.karbor_keystone_plugin.KarborKeystonePlugin"},{"line_number":38,"context_line":"        with mock.patch.object(cls, \u0027_do_init\u0027):"},{"line_number":39,"context_line":"            client_factory.init()"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_0ba192a3","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":11},"updated":"2017-01-04 08:13:04.000000000","message":"cls is usually used for the name of the current class. Please change to `client_class`","commit_id":"866d261ef86549fbef81d4401485fe6c3adeeec0"}],"karbor/tests/unit/plugins/test_server_protectable_plugin.py":[{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"4f4d12b6d3f1643333e61fedc7b3698f0a0fbb87","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class ServerProtectablePluginTest(base.TestCase):"},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(ServerProtectablePluginTest, self).setUp()"},{"line_number":29,"context_line":"        cls \u003d client_factory.karbor_keystone_plugin.KarborKeystonePlugin"},{"line_number":30,"context_line":"        with mock.patch.object(cls, \u0027_do_init\u0027):"},{"line_number":31,"context_line":"            client_factory.init()"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_8b83c203","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":11},"updated":"2017-01-04 08:13:04.000000000","message":"ditto","commit_id":"866d261ef86549fbef81d4401485fe6c3adeeec0"}],"karbor/tests/unit/plugins/test_volume_protectable_plugin.py":[{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"4f4d12b6d3f1643333e61fedc7b3698f0a0fbb87","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class VolumeProtectablePluginTest(base.TestCase):"},{"line_number":32,"context_line":"    def setUp(self):"},{"line_number":33,"context_line":"        super(VolumeProtectablePluginTest, self).setUp()"},{"line_number":34,"context_line":"        cls \u003d client_factory.karbor_keystone_plugin.KarborKeystonePlugin"},{"line_number":35,"context_line":"        with mock.patch.object(cls, \u0027_do_init\u0027):"},{"line_number":36,"context_line":"            client_factory.init()"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_ab86c610","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":11},"updated":"2017-01-04 08:13:04.000000000","message":"ditto","commit_id":"866d261ef86549fbef81d4401485fe6c3adeeec0"}],"requirements.txt":[{"author":{"_account_id":21648,"name":"zhangshuai","email":"446077695@qq.com","username":"zhangshuai"},"change_message_id":"e282e8d4a3ce4994a52e20c3613abc9fbdfef007","unresolved":false,"context_lines":[{"line_number":9,"context_line":"greenlet\u003e\u003d0.3.2 # MIT"},{"line_number":10,"context_line":"icalendar\u003e\u003d3.10 # BSD"},{"line_number":11,"context_line":"keystonemiddleware!\u003d4.5.0,\u003e\u003d4.2.0 # Apache-2.0"},{"line_number":12,"context_line":"keystoneauth1\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":13,"context_line":"oslo.config!\u003d3.18.0,\u003e\u003d3.14.0 # Apache-2.0"},{"line_number":14,"context_line":"oslo.concurrency\u003e\u003d3.8.0 # Apache-2.0"},{"line_number":15,"context_line":"oslo.context\u003e\u003d2.9.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":3,"id":"1a6eadb0_c7bcb2bd","line":12,"range":{"start_line":12,"start_character":15,"end_line":12,"end_character":21},"updated":"2016-12-15 10:53:52.000000000","message":"Is 2.14.0 vailable?","commit_id":"b9110c22755490e2c2ca27b4775d1f43c662745b"},{"author":{"_account_id":21648,"name":"zhangshuai","email":"446077695@qq.com","username":"zhangshuai"},"change_message_id":"e282e8d4a3ce4994a52e20c3613abc9fbdfef007","unresolved":false,"context_lines":[{"line_number":9,"context_line":"greenlet\u003e\u003d0.3.2 # MIT"},{"line_number":10,"context_line":"icalendar\u003e\u003d3.10 # BSD"},{"line_number":11,"context_line":"keystonemiddleware!\u003d4.5.0,\u003e\u003d4.2.0 # Apache-2.0"},{"line_number":12,"context_line":"keystoneauth1\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":13,"context_line":"oslo.config!\u003d3.18.0,\u003e\u003d3.14.0 # Apache-2.0"},{"line_number":14,"context_line":"oslo.concurrency\u003e\u003d3.8.0 # Apache-2.0"},{"line_number":15,"context_line":"oslo.context\u003e\u003d2.9.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":3,"id":"1a6eadb0_272806e2","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":34},"updated":"2016-12-15 10:53:52.000000000","message":"This line should be placed before \"keystonemiddleware!\u003d4.5.0,\u003e\u003d4.2.0 # Apache-2.0\".","commit_id":"b9110c22755490e2c2ca27b4775d1f43c662745b"}]}
