)]}'
{"requirements.txt":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"6abc0cca7263180a1a28e0321a4b4c64b7f0f08c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"python-swiftclient\u003e\u003d2.2.0 # Apache-2.0"},{"line_number":39,"context_line":"python-heatclient\u003e\u003d1.1.0 # Apache-2.0"},{"line_number":40,"context_line":"python-smaugclient\u003e\u003d0.0.4 # Apache-2.0"},{"line_number":41,"context_line":"freezer\u003e\u003d1.2.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"3aaa91ec_743771b0","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":27},"updated":"2016-06-29 06:36:42.000000000","message":"\u003d\u003e python-freezerclient","commit_id":"c0bf30d7e98c18168be27aa2d11165b1848589bd"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"aaf1fcc69be261975c63c4ba07a83d9b951cda46","unresolved":false,"context_lines":[{"line_number":38,"context_line":"python-swiftclient\u003e\u003d2.2.0 # Apache-2.0"},{"line_number":39,"context_line":"python-heatclient\u003e\u003d1.1.0 # Apache-2.0"},{"line_number":40,"context_line":"python-smaugclient\u003e\u003d0.0.4 # Apache-2.0"},{"line_number":41,"context_line":"freezer\u003e\u003d1.2.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"3aaa91ec_bdf37d9e","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":27},"in_reply_to":"3aaa91ec_743771b0","updated":"2016-06-29 07:58:43.000000000","message":"At present, we can not use python-freezerclient directly and use freezer instead.","commit_id":"c0bf30d7e98c18168be27aa2d11165b1848589bd"}],"smaug/common/config.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"6abc0cca7263180a1a28e0321a4b4c64b7f0f08c","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"CONF.register_opts(global_opts)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"service_client_opts \u003d ["},{"line_number":79,"context_line":"    cfg.StrOpt(\u0027service_name\u0027,"},{"line_number":80,"context_line":"               help\u003d\u0027The name of service registered in Keystone\u0027),"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    cfg.StrOpt(\u0027service_type\u0027,"},{"line_number":83,"context_line":"               help\u003d\u0027The type of service registered in Keystone\u0027),"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027version\u0027,"},{"line_number":86,"context_line":"               help\u003d\u0027The version of service client\u0027),"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    cfg.StrOpt(\u0027region_id\u0027,"},{"line_number":89,"context_line":"               default\u003d\u0027RegionOne\u0027,"},{"line_number":90,"context_line":"               help\u003d\u0027The region id which the service belongs to.\u0027),"},{"line_number":91,"context_line":"]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"keystone_client_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_1451cdd8","line":91,"range":{"start_line":78,"start_character":0,"end_line":91,"end_character":1},"updated":"2016-06-29 06:36:42.000000000","message":"What is this and why it is here and not in freezer.py?","commit_id":"c0bf30d7e98c18168be27aa2d11165b1848589bd"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"aaf1fcc69be261975c63c4ba07a83d9b951cda46","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"CONF.register_opts(global_opts)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"service_client_opts \u003d ["},{"line_number":79,"context_line":"    cfg.StrOpt(\u0027service_name\u0027,"},{"line_number":80,"context_line":"               help\u003d\u0027The name of service registered in Keystone\u0027),"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    cfg.StrOpt(\u0027service_type\u0027,"},{"line_number":83,"context_line":"               help\u003d\u0027The type of service registered in Keystone\u0027),"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027version\u0027,"},{"line_number":86,"context_line":"               help\u003d\u0027The version of service client\u0027),"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    cfg.StrOpt(\u0027region_id\u0027,"},{"line_number":89,"context_line":"               default\u003d\u0027RegionOne\u0027,"},{"line_number":90,"context_line":"               help\u003d\u0027The region id which the service belongs to.\u0027),"},{"line_number":91,"context_line":"]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"keystone_client_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_dd8929cc","line":91,"range":{"start_line":78,"start_character":0,"end_line":91,"end_character":1},"in_reply_to":"3aaa91ec_1451cdd8","updated":"2016-06-29 07:58:43.000000000","message":"I think we can get the endpoint of nova, cinder etc by keystone client as i do in the freezer.py(now i change it to client_freezer.py). User should provider these config items. I think it can be more flexible.","commit_id":"c0bf30d7e98c18168be27aa2d11165b1848589bd"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"ac1bd6d001b2b4b4462197414a139d06a1e754f7","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"CONF.register_opts(global_opts)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"service_client_opts \u003d ["},{"line_number":79,"context_line":"    cfg.StrOpt(\u0027service_name\u0027,"},{"line_number":80,"context_line":"               help\u003d\u0027The name of service registered in Keystone\u0027),"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    cfg.StrOpt(\u0027service_type\u0027,"},{"line_number":83,"context_line":"               help\u003d\u0027The type of service registered in Keystone\u0027),"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027version\u0027,"},{"line_number":86,"context_line":"               help\u003d\u0027The version of service client\u0027),"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    cfg.StrOpt(\u0027region_id\u0027,"},{"line_number":89,"context_line":"               default\u003d\u0027RegionOne\u0027,"},{"line_number":90,"context_line":"               help\u003d\u0027The region id which the service belongs to.\u0027),"},{"line_number":91,"context_line":"]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"keystone_client_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_c02140fe","line":91,"range":{"start_line":78,"start_character":0,"end_line":91,"end_character":1},"in_reply_to":"3aaa91ec_dd8929cc","updated":"2016-06-29 08:15:50.000000000","message":"If we construct the client as i do, then every client has its own  \u0027service_client_opts\u0027, so i put it here.","commit_id":"c0bf30d7e98c18168be27aa2d11165b1848589bd"}],"smaug/services/protection/clients/freezer.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"6abc0cca7263180a1a28e0321a4b4c64b7f0f08c","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def create(context, conf):"},{"line_number":28,"context_line":"    try:"},{"line_number":29,"context_line":"        fc_cfg \u003d CONF[CONFIG_GROUP]"},{"line_number":30,"context_line":"        kc_plugin \u003d keystone_client_plugin.KeystoneClientPlugin()"},{"line_number":31,"context_line":"        endpoint \u003d kc_plugin.get_service_endpoint("},{"line_number":32,"context_line":"            fc_cfg.service_name, fc_cfg.service_type, \u0027public\u0027,"},{"line_number":33,"context_line":"            fc_cfg.region_id)"},{"line_number":34,"context_line":"    except Exception:"},{"line_number":35,"context_line":"        raise"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    LOG.debug(\"Creating glance client with url %s.\", endpoint)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_94293d3a","line":35,"range":{"start_line":28,"start_character":0,"end_line":35,"end_character":13},"updated":"2016-06-29 06:36:42.000000000","message":"why is this different from the rest of the clients?","commit_id":"c0bf30d7e98c18168be27aa2d11165b1848589bd"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"ac1bd6d001b2b4b4462197414a139d06a1e754f7","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def create(context, conf):"},{"line_number":28,"context_line":"    try:"},{"line_number":29,"context_line":"        fc_cfg \u003d CONF[CONFIG_GROUP]"},{"line_number":30,"context_line":"        kc_plugin \u003d keystone_client_plugin.KeystoneClientPlugin()"},{"line_number":31,"context_line":"        endpoint \u003d kc_plugin.get_service_endpoint("},{"line_number":32,"context_line":"            fc_cfg.service_name, fc_cfg.service_type, \u0027public\u0027,"},{"line_number":33,"context_line":"            fc_cfg.region_id)"},{"line_number":34,"context_line":"    except Exception:"},{"line_number":35,"context_line":"        raise"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    LOG.debug(\"Creating glance client with url %s.\", endpoint)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_60c7ac12","line":35,"range":{"start_line":28,"start_character":0,"end_line":35,"end_character":13},"in_reply_to":"3aaa91ec_604dec71","updated":"2016-06-29 08:15:50.000000000","message":"I think if we get the endpoint by keystone client, then we no need to set the config of \u0027**_endpoint\u0027 and \u0027**_catalog\u0027.","commit_id":"c0bf30d7e98c18168be27aa2d11165b1848589bd"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"aaf1fcc69be261975c63c4ba07a83d9b951cda46","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def create(context, conf):"},{"line_number":28,"context_line":"    try:"},{"line_number":29,"context_line":"        fc_cfg \u003d CONF[CONFIG_GROUP]"},{"line_number":30,"context_line":"        kc_plugin \u003d keystone_client_plugin.KeystoneClientPlugin()"},{"line_number":31,"context_line":"        endpoint \u003d kc_plugin.get_service_endpoint("},{"line_number":32,"context_line":"            fc_cfg.service_name, fc_cfg.service_type, \u0027public\u0027,"},{"line_number":33,"context_line":"            fc_cfg.region_id)"},{"line_number":34,"context_line":"    except Exception:"},{"line_number":35,"context_line":"        raise"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    LOG.debug(\"Creating glance client with url %s.\", endpoint)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_604dec71","line":35,"range":{"start_line":28,"start_character":0,"end_line":35,"end_character":13},"in_reply_to":"3aaa91ec_94293d3a","updated":"2016-06-29 07:58:43.000000000","message":"I have writed a keystone client plugin(https://review.openstack.org/#/c/334857) to offer the function that get the other service\u0027s endpoint in order to be more flexible.","commit_id":"c0bf30d7e98c18168be27aa2d11165b1848589bd"}]}
