)]}'
{"nova/api/auth.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"180c1e4f02da2b2261b51dbc07b6f4fd53f0a27f","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                raise webob.exc.HTTPInternalServerError("},{"line_number":140,"context_line":"                          _(\u0027Invalid service catalog json.\u0027))"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        user_auth_plugin \u003d req.environ.get(\u0027keystone.token_auth\u0027)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        ctx \u003d context.RequestContext(user_id,"},{"line_number":145,"context_line":"                                     project_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_3a8bef1f","line":142,"updated":"2014-10-28 17:48:08.000000000","message":"is this set by keystone middleware? A NOTE here would be very helpful.","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2e4117353c4518f560423c72a485fbaacb7cf502","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                raise webob.exc.HTTPInternalServerError("},{"line_number":140,"context_line":"                          _(\u0027Invalid service catalog json.\u0027))"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        user_auth_plugin \u003d req.environ.get(\u0027keystone.token_auth\u0027)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        ctx \u003d context.RequestContext(user_id,"},{"line_number":145,"context_line":"                                     project_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_67115f5c","line":142,"in_reply_to":"9aa7fdbe_3a8bef1f","updated":"2014-10-28 19:40:55.000000000","message":"yes. auth_token middleware provides an auth plugin you can just use.","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"}],"nova/context.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"180c1e4f02da2b2261b51dbc07b6f4fd53f0a27f","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class _ContextAuthPlugin(auth.BaseAuthPlugin):"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, auth_token, sc):"},{"line_number":41,"context_line":"        super(_ContextAuthPlugin, self).__init__()"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_ba6fdf29","line":39,"updated":"2014-10-28 17:48:08.000000000","message":"Shouldn\u0027t this code be provided by keystoneclient? This is similar to token_endpoint auth plugin except it takes a service catalog. Also some docstring on what this is for would be helpful.","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2e4117353c4518f560423c72a485fbaacb7cf502","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class _ContextAuthPlugin(auth.BaseAuthPlugin):"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, auth_token, sc):"},{"line_number":41,"context_line":"        super(_ContextAuthPlugin, self).__init__()"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_8222b1a0","line":39,"in_reply_to":"9aa7fdbe_ba6fdf29","updated":"2014-10-28 19:40:55.000000000","message":"It\u0027s fallback code for when you have to reconstruct the plugin from the Context rather than using the one from auth_token. This may happen with older auth_token middleware or when the context has been serialized and passed over RPC. \n\nIdeally we\u0027d just serialize the plugin from auth_token instead but i\u0027m not sure how much i\u0027m allowed to change Context here.","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"180c1e4f02da2b2261b51dbc07b6f4fd53f0a27f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        return self.service_catalog.url_for(service_type\u003dservice_type,"},{"line_number":53,"context_line":"                                            service_name\u003dservice_name,"},{"line_number":54,"context_line":"                                            endpoint_type\u003dinterface,"},{"line_number":55,"context_line":"                                            region_name\u003dregion_name)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class RequestContext(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_1a8d4bd3","line":55,"updated":"2014-10-28 17:48:08.000000000","message":"shouldn\u0027t we pass kwargs into url_for() as well?","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2e4117353c4518f560423c72a485fbaacb7cf502","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        return self.service_catalog.url_for(service_type\u003dservice_type,"},{"line_number":53,"context_line":"                                            service_name\u003dservice_name,"},{"line_number":54,"context_line":"                                            endpoint_type\u003dinterface,"},{"line_number":55,"context_line":"                                            region_name\u003dregion_name)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class RequestContext(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_c7092b32","line":55,"in_reply_to":"9aa7fdbe_1a8d4bd3","updated":"2014-10-28 19:40:55.000000000","message":"these are the only things that url_for accepts/works on i think.","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"180c1e4f02da2b2261b51dbc07b6f4fd53f0a27f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                 request_id\u003dNone, auth_token\u003dNone, overwrite\u003dTrue,"},{"line_number":68,"context_line":"                 quota_class\u003dNone, user_name\u003dNone, project_name\u003dNone,"},{"line_number":69,"context_line":"                 service_catalog\u003dNone, instance_lock_checked\u003dFalse,"},{"line_number":70,"context_line":"                 user_auth_plugin\u003dNone, **kwargs):"},{"line_number":71,"context_line":"        \"\"\":param read_deleted: \u0027no\u0027 indicates deleted records are hidden,"},{"line_number":72,"context_line":"                \u0027yes\u0027 indicates deleted records are visible,"},{"line_number":73,"context_line":"                \u0027only\u0027 indicates that *only* deleted records are visible."}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_3abf6f62","line":70,"updated":"2014-10-28 17:48:08.000000000","message":"docstring?","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"442c7fd69b83b53d096565b4242f0b13ee741218","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                 request_id\u003dNone, auth_token\u003dNone, overwrite\u003dTrue,"},{"line_number":68,"context_line":"                 quota_class\u003dNone, user_name\u003dNone, project_name\u003dNone,"},{"line_number":69,"context_line":"                 service_catalog\u003dNone, instance_lock_checked\u003dFalse,"},{"line_number":70,"context_line":"                 user_auth_plugin\u003dNone, **kwargs):"},{"line_number":71,"context_line":"        \"\"\":param read_deleted: \u0027no\u0027 indicates deleted records are hidden,"},{"line_number":72,"context_line":"                \u0027yes\u0027 indicates deleted records are visible,"},{"line_number":73,"context_line":"                \u0027only\u0027 indicates that *only* deleted records are visible."}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_9d4db040","line":70,"in_reply_to":"9aa7fdbe_3abf6f62","updated":"2014-10-28 20:26:26.000000000","message":"Done","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"3f8bda4056b5a2398a7a568d024f84a38c52ef4f","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        if self.user_auth_plugin:"},{"line_number":134,"context_line":"            return self.user_auth_plugin"},{"line_number":135,"context_line":"        else:"},{"line_number":136,"context_line":"            return _ContextAuthPlugin(self.auth_token, self.service_catalog)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def _get_read_deleted(self):"},{"line_number":139,"context_line":"        return self._read_deleted"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_9b0dae3a","line":136,"updated":"2014-11-19 00:02:26.000000000","message":"these two have inconsistent interface looks like. _ContextAuthPlugin implements keystoneclient.auth.BaseAuthPlugin.\n\nuser_auth_plugin could be passed in from middleware (\u0027keystone.token_auth\u0027). That one implements BaseIdentityPlugin\n\nhttps://github.com/openstack/keystonemiddleware/blob/master/keystonemiddleware/auth_token.py#L627","commit_id":"49192695423b949be0e914dee47695db30636280"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"319533bfb51376009c779781e1a419e902f3bb97","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        if self.user_auth_plugin:"},{"line_number":134,"context_line":"            return self.user_auth_plugin"},{"line_number":135,"context_line":"        else:"},{"line_number":136,"context_line":"            return _ContextAuthPlugin(self.auth_token, self.service_catalog)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def _get_read_deleted(self):"},{"line_number":139,"context_line":"        return self._read_deleted"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_a5ae9696","line":136,"in_reply_to":"5a890539_57ae8de8","updated":"2014-11-20 06:11:53.000000000","message":"That\u0027s fine. My point is as BaseIdentityPlugin has extra capabilities (i.e. get_auth_ref()). So as long as the caller stay within BaseAuthPlugin we should be fine. Just want to make sure we are aware of that.","commit_id":"49192695423b949be0e914dee47695db30636280"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"69c91e3a2f1d045265b233cb7271f22c7fa21d69","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        if self.user_auth_plugin:"},{"line_number":134,"context_line":"            return self.user_auth_plugin"},{"line_number":135,"context_line":"        else:"},{"line_number":136,"context_line":"            return _ContextAuthPlugin(self.auth_token, self.service_catalog)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def _get_read_deleted(self):"},{"line_number":139,"context_line":"        return self._read_deleted"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_57ae8de8","line":136,"in_reply_to":"5a890539_9b0dae3a","updated":"2014-11-20 02:28:49.000000000","message":"BaseIdentityPlugin inherits BaseAuthPlugin - BaseAuthPlugin is what we\u0027re looking for","commit_id":"49192695423b949be0e914dee47695db30636280"}],"nova/volume/cinder.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"180c1e4f02da2b2261b51dbc07b6f4fd53f0a27f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"CONF.register_opts(cinder_opts, group\u003dCINDER_OPT_GROUP)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"deprecated \u003d {\u0027timeout\u0027: [cfg.DeprecatedOpt(\u0027cinder_http_timeout\u0027),"},{"line_number":76,"context_line":"                          cfg.DeprecatedOpt(\u0027http_timeout\u0027,"},{"line_number":77,"context_line":"                                            group\u003dCINDER_OPT_GROUP)],"},{"line_number":78,"context_line":"              \u0027cafile\u0027: [cfg.DeprecatedOpt(\u0027cinder_ca_certificates_file\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_3a4daf9a","line":75,"updated":"2014-10-28 17:48:08.000000000","message":"group\u003dCINDER_OPT_GROUP? same for the others","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"442c7fd69b83b53d096565b4242f0b13ee741218","unresolved":false,"context_lines":[{"line_number":72,"context_line":"CONF.register_opts(cinder_opts, group\u003dCINDER_OPT_GROUP)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"deprecated \u003d {\u0027timeout\u0027: [cfg.DeprecatedOpt(\u0027cinder_http_timeout\u0027),"},{"line_number":76,"context_line":"                          cfg.DeprecatedOpt(\u0027http_timeout\u0027,"},{"line_number":77,"context_line":"                                            group\u003dCINDER_OPT_GROUP)],"},{"line_number":78,"context_line":"              \u0027cafile\u0027: [cfg.DeprecatedOpt(\u0027cinder_ca_certificates_file\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_3d0be4d6","line":75,"in_reply_to":"9aa7fdbe_3a4daf9a","updated":"2014-10-28 20:26:26.000000000","message":"no, these are older values that existed in the DEFAULT namespace.","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"180c1e4f02da2b2261b51dbc07b6f4fd53f0a27f","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    version \u003d None"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    auth \u003d context.get_auth_plugin()"},{"line_number":115,"context_line":"    service_type, service_name, interface \u003d CONF.cinder.catalog_info.split(\u0027:\u0027)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    service_parameters \u003d {\u0027service_type\u0027: service_type,"},{"line_number":118,"context_line":"                          \u0027service_name\u0027: service_name,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_fa56c728","line":115,"updated":"2014-10-28 17:48:08.000000000","message":"I think this is new config, we may need to doc this","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"442c7fd69b83b53d096565b4242f0b13ee741218","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    version \u003d None"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    auth \u003d context.get_auth_plugin()"},{"line_number":115,"context_line":"    service_type, service_name, interface \u003d CONF.cinder.catalog_info.split(\u0027:\u0027)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    service_parameters \u003d {\u0027service_type\u0027: service_type,"},{"line_number":118,"context_line":"                          \u0027service_name\u0027: service_name,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_9dfbf0bf","line":115,"in_reply_to":"9aa7fdbe_fa56c728","updated":"2014-10-28 20:26:26.000000000","message":"no - this has existed previously.","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"180c1e4f02da2b2261b51dbc07b6f4fd53f0a27f","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    service_parameters \u003d {\u0027service_type\u0027: service_type,"},{"line_number":118,"context_line":"                          \u0027service_name\u0027: service_name,"},{"line_number":119,"context_line":"                          \u0027interface\u0027: interface,"},{"line_number":120,"context_line":"                          \u0027region_name\u0027: CONF.cinder.os_region_name}"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    if CONF.cinder.endpoint_template:"},{"line_number":123,"context_line":"        url \u003d CONF.cinder.endpoint_template % context.to_dict()"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_7a11f75b","line":120,"updated":"2014-10-28 17:48:08.000000000","message":"this is weird, shouldn\u0027t os_region_name be part of catalog_info? I am guessing we do this for backward compatibility?","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"442c7fd69b83b53d096565b4242f0b13ee741218","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    service_parameters \u003d {\u0027service_type\u0027: service_type,"},{"line_number":118,"context_line":"                          \u0027service_name\u0027: service_name,"},{"line_number":119,"context_line":"                          \u0027interface\u0027: interface,"},{"line_number":120,"context_line":"                          \u0027region_name\u0027: CONF.cinder.os_region_name}"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    if CONF.cinder.endpoint_template:"},{"line_number":123,"context_line":"        url \u003d CONF.cinder.endpoint_template % context.to_dict()"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_dd01f8af","line":120,"in_reply_to":"9aa7fdbe_7a11f75b","updated":"2014-10-28 20:26:26.000000000","message":"yea - i don\u0027t know. These config options are existing.","commit_id":"0677248a86c28dabd6f9d3e93ae677e92f3edbe5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"3f8bda4056b5a2398a7a568d024f84a38c52ef4f","unresolved":false,"context_lines":[{"line_number":77,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"_SESSION \u003d None"},{"line_number":80,"context_line":"_V1_ERROR_RAISED \u003d False"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def reset_globals():"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_3be83a16","line":80,"updated":"2014-11-19 00:02:26.000000000","message":"A NOTE would be helpful. Why can\u0027t this be a configurable option?","commit_id":"49192695423b949be0e914dee47695db30636280"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"69c91e3a2f1d045265b233cb7271f22c7fa21d69","unresolved":false,"context_lines":[{"line_number":77,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"_SESSION \u003d None"},{"line_number":80,"context_line":"_V1_ERROR_RAISED \u003d False"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def reset_globals():"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_b7b5f132","line":80,"in_reply_to":"5a890539_3be83a16","updated":"2014-11-20 02:28:49.000000000","message":"it\u0027s not an option, it\u0027s a flag to ensure the logs don\u0027t get spammed.","commit_id":"49192695423b949be0e914dee47695db30636280"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"319533bfb51376009c779781e1a419e902f3bb97","unresolved":false,"context_lines":[{"line_number":77,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"_SESSION \u003d None"},{"line_number":80,"context_line":"_V1_ERROR_RAISED \u003d False"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def reset_globals():"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_85999a70","line":80,"in_reply_to":"5a890539_b7b5f132","updated":"2014-11-20 06:11:53.000000000","message":"Ugly. Would it be thread safe? Or maybe we don\u0027t care about threading?","commit_id":"49192695423b949be0e914dee47695db30636280"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"3f8bda4056b5a2398a7a568d024f84a38c52ef4f","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    return wrapper"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"def get_cinder_client_version(url):"},{"line_number":259,"context_line":"    \"\"\"Parse cinder client version by endpoint url."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    :param url: URL for cinder."}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_fb9dd267","line":258,"updated":"2014-11-19 00:02:26.000000000","message":"looks like you are changing a public interface","commit_id":"49192695423b949be0e914dee47695db30636280"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"319533bfb51376009c779781e1a419e902f3bb97","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    return wrapper"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"def get_cinder_client_version(url):"},{"line_number":259,"context_line":"    \"\"\"Parse cinder client version by endpoint url."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    :param url: URL for cinder."}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_45b6d2dd","line":258,"in_reply_to":"5a890539_177c0572","updated":"2014-11-20 06:11:53.000000000","message":"anything without an underscore prefix is public right?","commit_id":"49192695423b949be0e914dee47695db30636280"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"69c91e3a2f1d045265b233cb7271f22c7fa21d69","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    return wrapper"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"def get_cinder_client_version(url):"},{"line_number":259,"context_line":"    \"\"\"Parse cinder client version by endpoint url."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    :param url: URL for cinder."}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_177c0572","line":258,"in_reply_to":"5a890539_fb9dd267","updated":"2014-11-20 02:28:49.000000000","message":"this is all internal to nova - why would it be public?","commit_id":"49192695423b949be0e914dee47695db30636280"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"3f8bda4056b5a2398a7a568d024f84a38c52ef4f","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                      metadata\u003dmetadata,"},{"line_number":384,"context_line":"                      imageRef\u003dimage_id)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        if isinstance(client, v1_client.Client):"},{"line_number":387,"context_line":"            kwargs[\u0027display_name\u0027] \u003d name"},{"line_number":388,"context_line":"            kwargs[\u0027display_description\u0027] \u003d description"},{"line_number":389,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_5bba66c1","line":386,"updated":"2014-11-19 00:02:26.000000000","message":"yikes! client.get_version() would\u0027ve been much nicer","commit_id":"49192695423b949be0e914dee47695db30636280"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"69c91e3a2f1d045265b233cb7271f22c7fa21d69","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                      metadata\u003dmetadata,"},{"line_number":384,"context_line":"                      imageRef\u003dimage_id)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        if isinstance(client, v1_client.Client):"},{"line_number":387,"context_line":"            kwargs[\u0027display_name\u0027] \u003d name"},{"line_number":388,"context_line":"            kwargs[\u0027display_description\u0027] \u003d description"},{"line_number":389,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_7792a9a0","line":386,"in_reply_to":"5a890539_5bba66c1","updated":"2014-11-20 02:28:49.000000000","message":"that would imply the client knows, we created the client ourself. There might be a nicer way - i don\u0027t mind.","commit_id":"49192695423b949be0e914dee47695db30636280"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"319533bfb51376009c779781e1a419e902f3bb97","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                      metadata\u003dmetadata,"},{"line_number":384,"context_line":"                      imageRef\u003dimage_id)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        if isinstance(client, v1_client.Client):"},{"line_number":387,"context_line":"            kwargs[\u0027display_name\u0027] \u003d name"},{"line_number":388,"context_line":"            kwargs[\u0027display_description\u0027] \u003d description"},{"line_number":389,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_85351a48","line":386,"in_reply_to":"5a890539_7792a9a0","updated":"2014-11-20 06:11:53.000000000","message":"I mean something like\n\n  if client.get_version() \u003d\u003d \u00271\u0027:\n\nor\n\n  if client.VERSION \u003d\u003d \u00271\u0027:\n\nAnyway, no big deal. Just matter of coding style preference I suppose.","commit_id":"49192695423b949be0e914dee47695db30636280"}]}
