)]}'
{"novaclient/client.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"097da2b99e4d7c112ce48f091ceb592f16327396","unresolved":false,"context_lines":[{"line_number":720,"context_line":"def get_client_class(version):"},{"line_number":721,"context_line":"    if version in DEPRECATED_VERSIONS:"},{"line_number":722,"context_line":"        LOG.warning(\"%(deprecated_version)s\u0027 version is deprecated, \""},{"line_number":723,"context_line":"                    \"V%(alternative)s will be used instead as alternative.\" %"},{"line_number":724,"context_line":"                    {"},{"line_number":725,"context_line":"                        \"deprecated_version\": version,"},{"line_number":726,"context_line":"                        \"alternative\": DEPRECATED_VERSIONS[version]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9b358b_1ad1b657","line":723,"updated":"2015-03-31 15:44:05.000000000","message":"There\u0027s some inconsistency in this log message; you\u0027re using a bare version for deprecated version (i.e., it would be formatted as \"1.1\"), but you\u0027re prefixing the alternative with a \u0027V\u0027 (i.e., \"V2\").  I\u0027d like to see the log message be internally consistent; I suggest dropping the \u0027V\u0027 entirely.  I also see some potential for rewording; how does this work for you: \"Version %(deprecated_version)s is deprecated.  Using alternative version %(alternative)s instead.\"","commit_id":"274b6a28dc5b2a1aceb41fe7b02600e99bf50ecd"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"1e850a255658812661cdaedac9f87c93be37fdba","unresolved":false,"context_lines":[{"line_number":720,"context_line":"def get_client_class(version):"},{"line_number":721,"context_line":"    if version in DEPRECATED_VERSIONS:"},{"line_number":722,"context_line":"        LOG.warning(\"%(deprecated_version)s\u0027 version is deprecated, \""},{"line_number":723,"context_line":"                    \"V%(alternative)s will be used instead as alternative.\" %"},{"line_number":724,"context_line":"                    {"},{"line_number":725,"context_line":"                        \"deprecated_version\": version,"},{"line_number":726,"context_line":"                        \"alternative\": DEPRECATED_VERSIONS[version]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9b358b_3a2b5a96","line":723,"in_reply_to":"da9b358b_1ad1b657","updated":"2015-03-31 16:00:36.000000000","message":"Done","commit_id":"274b6a28dc5b2a1aceb41fe7b02600e99bf50ecd"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"097da2b99e4d7c112ce48f091ceb592f16327396","unresolved":false,"context_lines":[{"line_number":727,"context_line":"        version \u003d DEPRECATED_VERSIONS[version]"},{"line_number":728,"context_line":"    try:"},{"line_number":729,"context_line":"        return importutils.import_class("},{"line_number":730,"context_line":"            \"novaclient.v%s.client.Client\" % version)"},{"line_number":731,"context_line":"    except ImportError:"},{"line_number":732,"context_line":"        msg \u003d _(\"Invalid client version \u0027%s\u0027.\") % version"},{"line_number":733,"context_line":"        raise exceptions.UnsupportedVersion(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9b358b_1a0656ce","line":730,"updated":"2015-03-31 15:44:05.000000000","message":"I just have to point out that this isn\u0027t clean when it comes to versions with periods in them, e.g. \"1.1\".  That *shouldn\u0027t* be a problem in the end, since we\u0027d still end up with an ImportError, which would be converted into an UnsupportedVersion, which is the correct thing to do in that event, but I needed to make the observation :)","commit_id":"274b6a28dc5b2a1aceb41fe7b02600e99bf50ecd"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"1e850a255658812661cdaedac9f87c93be37fdba","unresolved":false,"context_lines":[{"line_number":727,"context_line":"        version \u003d DEPRECATED_VERSIONS[version]"},{"line_number":728,"context_line":"    try:"},{"line_number":729,"context_line":"        return importutils.import_class("},{"line_number":730,"context_line":"            \"novaclient.v%s.client.Client\" % version)"},{"line_number":731,"context_line":"    except ImportError:"},{"line_number":732,"context_line":"        msg \u003d _(\"Invalid client version \u0027%s\u0027.\") % version"},{"line_number":733,"context_line":"        raise exceptions.UnsupportedVersion(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9b358b_b5e09dfb","line":730,"in_reply_to":"da9b358b_1a0656ce","updated":"2015-03-31 16:00:36.000000000","message":"\"1.1\" will use \"2\" and import will be successful, all future versions with period in them will be handled by mechanism related to microversions.","commit_id":"274b6a28dc5b2a1aceb41fe7b02600e99bf50ecd"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"9e67506b003affb7b4c84fc2c2eee0bfc53a3e77","unresolved":false,"context_lines":[{"line_number":720,"context_line":"def get_client_class(version):"},{"line_number":721,"context_line":"    if version in DEPRECATED_VERSIONS:"},{"line_number":722,"context_line":"        LOG.warning(\"%(deprecated_version)s\u0027 version is deprecated, \""},{"line_number":723,"context_line":"                    \" Using alternative version \u0027%(alternative)s\u0027 instead.\" %"},{"line_number":724,"context_line":"                    {"},{"line_number":725,"context_line":"                        \"deprecated_version\": version,"},{"line_number":726,"context_line":"                        \"alternative\": DEPRECATED_VERSIONS[version]})"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9b358b_95fa39bc","line":723,"updated":"2015-03-31 16:00:00.000000000","message":"\"Using\" should not be capitalized here.  To put this into perspective, someone trying to use 1.1 would get the following warning:\n\n    1.1\u0027 version is deprecated,  Using alternative version \u00272\u0027 instead.\n\nI recommend having it read:\n\n    Version 1.1 is deprecated, using alternative version 2 instead.\n\nNote elimination of single quotes around version numbers (including the orphaned one around \"1.1\"), elimination of the double spaces before \"using\" (as well as downcasing it), and starting the warning with the (capitalized) word \"Version\" instead of a number…","commit_id":"1d480f35bb5fc1f4d953be5c7f4a5500d648611a"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c7362e0138cd0d28ef0cb6986ac58b4b05288e3d","unresolved":false,"context_lines":[{"line_number":720,"context_line":"def get_client_class(version):"},{"line_number":721,"context_line":"    if version in DEPRECATED_VERSIONS:"},{"line_number":722,"context_line":"        LOG.warning(\"%(deprecated_version)s\u0027 version is deprecated, \""},{"line_number":723,"context_line":"                    \" Using alternative version \u0027%(alternative)s\u0027 instead.\" %"},{"line_number":724,"context_line":"                    {"},{"line_number":725,"context_line":"                        \"deprecated_version\": version,"},{"line_number":726,"context_line":"                        \"alternative\": DEPRECATED_VERSIONS[version]})"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9b358b_35c48d5d","line":723,"in_reply_to":"da9b358b_95fa39bc","updated":"2015-03-31 16:01:52.000000000","message":"Done","commit_id":"1d480f35bb5fc1f4d953be5c7f4a5500d648611a"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b57074d84929035cb2cae10b1faada8dbfb0d9fb","unresolved":false,"context_lines":[{"line_number":720,"context_line":"def get_client_class(version):"},{"line_number":721,"context_line":"    if version in DEPRECATED_VERSIONS:"},{"line_number":722,"context_line":"        LOG.warning(\"%(deprecated_version)s version is deprecated, \""},{"line_number":723,"context_line":"                    \" using alternative version %(alternative)s instead.\" %"},{"line_number":724,"context_line":"                    {"},{"line_number":725,"context_line":"                        \"deprecated_version\": version,"},{"line_number":726,"context_line":"                        \"alternative\": DEPRECATED_VERSIONS[version]})"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9b358b_354a4dad","line":723,"updated":"2015-03-31 16:10:31.000000000","message":"You\u0027ve taken just a couple of bits of my advice—downcasing \u0027Using\u0027—but left all the other things I complained about alone, including the double space preceding \u0027using\u0027 and the fact the sentence doesn\u0027t start with a word.  I\u0027d really like to see this format string be:\n\n    \"Version %(deprecated_version)s is deprecated, using \"\n    \"alternative version %(alternative)s instead.\"","commit_id":"c14171557937376aa712153cec6dc1e30aa44dc1"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e9951bd1f959f218ad25ce4d1e125a79c226257a","unresolved":false,"context_lines":[{"line_number":720,"context_line":"def get_client_class(version):"},{"line_number":721,"context_line":"    if version in DEPRECATED_VERSIONS:"},{"line_number":722,"context_line":"        LOG.warning(\"%(deprecated_version)s version is deprecated, \""},{"line_number":723,"context_line":"                    \" using alternative version %(alternative)s instead.\" %"},{"line_number":724,"context_line":"                    {"},{"line_number":725,"context_line":"                        \"deprecated_version\": version,"},{"line_number":726,"context_line":"                        \"alternative\": DEPRECATED_VERSIONS[version]})"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9b358b_f55e2411","line":723,"in_reply_to":"da9b358b_354a4dad","updated":"2015-03-31 16:18:47.000000000","message":"Sorry, done.","commit_id":"c14171557937376aa712153cec6dc1e30aa44dc1"},{"author":{"_account_id":14027,"name":"Michal Rostecki","email":"mrostecki@suse.de","username":"mrostecki"},"change_message_id":"938a7d3c5ce624f3ccd73b16324c69e1f31bff9e","unresolved":false,"context_lines":[{"line_number":724,"context_line":"                    {"},{"line_number":725,"context_line":"                        \"deprecated_version\": version,"},{"line_number":726,"context_line":"                        \"alternative\": DEPRECATED_VERSIONS[version]})"},{"line_number":727,"context_line":"        version \u003d DEPRECATED_VERSIONS[version]"},{"line_number":728,"context_line":"    try:"},{"line_number":729,"context_line":"        return importutils.import_class("},{"line_number":730,"context_line":"            \"novaclient.v%s.client.Client\" % version)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_55d39004","line":727,"updated":"2015-03-31 16:51:35.000000000","message":"Wouln\u0027t it be better to assign this to another variable? Now we are getting the same dict item twice. And shouldn\u0027t we use i18n here?\n\nSomething like:\n\n alternative_version \u003d DEPRECATED_VERSIONS[version]\n LOG.warning(_(\"Version %s [...]\"\n                       \"alternative version %s [...]\" % version, alternative_version\n ))","commit_id":"7f41275514869c2d75597d1d896add1b53ede355"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"5ec0165c20a9d29d56227a47580e0f00b56fa917","unresolved":false,"context_lines":[{"line_number":724,"context_line":"                    {"},{"line_number":725,"context_line":"                        \"deprecated_version\": version,"},{"line_number":726,"context_line":"                        \"alternative\": DEPRECATED_VERSIONS[version]})"},{"line_number":727,"context_line":"        version \u003d DEPRECATED_VERSIONS[version]"},{"line_number":728,"context_line":"    try:"},{"line_number":729,"context_line":"        return importutils.import_class("},{"line_number":730,"context_line":"            \"novaclient.v%s.client.Client\" % version)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_e31e5c62","line":727,"in_reply_to":"da9b358b_55d39004","updated":"2015-03-31 23:07:40.000000000","message":"agreed with i18n and disagree with additional variable. \nImo, code will be less clear with additional variable:\n\n  alternative_version \u003d DEPRECATED_VERSIONS[version]\n  LOG.warning(...)\n  version \u003d alternative_version","commit_id":"7f41275514869c2d75597d1d896add1b53ede355"},{"author":{"_account_id":14027,"name":"Michal Rostecki","email":"mrostecki@suse.de","username":"mrostecki"},"change_message_id":"40e2e27b29126b3ad7cc98b28f567a90078d6602","unresolved":false,"context_lines":[{"line_number":720,"context_line":"def get_client_class(version):"},{"line_number":721,"context_line":"    version \u003d str(version)"},{"line_number":722,"context_line":"    if version in DEPRECATED_VERSIONS:"},{"line_number":723,"context_line":"        LOG.warning(\"Version %(deprecated_version)s is deprecated, using \""},{"line_number":724,"context_line":"                    \"alternative version %(alternative)s instead.\" %"},{"line_number":725,"context_line":"                    {"},{"line_number":726,"context_line":"                        \"deprecated_version\": version,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da9b358b_25cd56b7","line":723,"updated":"2015-04-01 12:24:53.000000000","message":"I see that in patchset 6 you added i18n here. Now, in patchet 7 you dropped it. Could you explain why?","commit_id":"1854581ac1d1e6b40b65feb8e33e64c80a274e50"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"dbbdf25c5f0d45db4df24de73caf4db91a8f5ce9","unresolved":false,"context_lines":[{"line_number":720,"context_line":"def get_client_class(version):"},{"line_number":721,"context_line":"    version \u003d str(version)"},{"line_number":722,"context_line":"    if version in DEPRECATED_VERSIONS:"},{"line_number":723,"context_line":"        LOG.warning(\"Version %(deprecated_version)s is deprecated, using \""},{"line_number":724,"context_line":"                    \"alternative version %(alternative)s instead.\" %"},{"line_number":725,"context_line":"                    {"},{"line_number":726,"context_line":"                        \"deprecated_version\": version,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da9b358b_a58e06ce","line":723,"in_reply_to":"da9b358b_25cd56b7","updated":"2015-04-01 12:36:00.000000000","message":"oh...my fault. just switched from my home PC to work and forgot to pull latest patch-set.","commit_id":"1854581ac1d1e6b40b65feb8e33e64c80a274e50"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"c9776ee357a936da0ccb31d9a1f0dd5642b12d2a","unresolved":false,"context_lines":[{"line_number":730,"context_line":"        return importutils.import_class("},{"line_number":731,"context_line":"            \"novaclient.v%s.client.Client\" % version)"},{"line_number":732,"context_line":"    except ImportError:"},{"line_number":733,"context_line":"        msg \u003d _(\"Invalid client version \u0027%s\u0027.\") % version"},{"line_number":734,"context_line":"        raise exceptions.UnsupportedVersion(msg)"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"baa041b7_a24cf770","line":733,"updated":"2015-04-03 05:14:59.000000000","message":"I think it\u0027s unfriendly not to tell the user what versions are valid like the old error message had. Like, just keep guessing? :P","commit_id":"f0a33d41bd338df821cd54dfe4f4dcfddec53d05"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"723d2dd504826e12529153b41a4d60eb9d4ad70d","unresolved":false,"context_lines":[{"line_number":730,"context_line":"        return importutils.import_class("},{"line_number":731,"context_line":"            \"novaclient.v%s.client.Client\" % version)"},{"line_number":732,"context_line":"    except ImportError:"},{"line_number":733,"context_line":"        msg \u003d _(\"Invalid client version \u0027%s\u0027.\") % version"},{"line_number":734,"context_line":"        raise exceptions.UnsupportedVersion(msg)"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"baa041b7_c1e8e712","line":733,"in_reply_to":"baa041b7_a24cf770","updated":"2015-04-06 13:22:43.000000000","message":"Done","commit_id":"f0a33d41bd338df821cd54dfe4f4dcfddec53d05"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f7337a23cd75a1f34d1f69c233cc6261cccf6243","unresolved":false,"context_lines":[{"line_number":725,"context_line":"                    \"alternative version %(alternative)s instead.\") %"},{"line_number":726,"context_line":"                    {"},{"line_number":727,"context_line":"                        \"deprecated_version\": version,"},{"line_number":728,"context_line":"                        \"alternative\": DEPRECATED_VERSIONS[version]})"},{"line_number":729,"context_line":"        version \u003d DEPRECATED_VERSIONS[version]"},{"line_number":730,"context_line":"    try:"},{"line_number":731,"context_line":"        return importutils.import_class("}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa53dc9_aaf28ad0","line":728,"updated":"2015-04-08 00:03:38.000000000","message":"I pulled down this patch to try it out with devstack, and I found this log message can\u0027t go anywhere (there isn\u0027t any other logging in novaclient, either). When I try instantiating a client object with version \u00271.1\u0027 I get the message instead:\n\nNo handlers could be found for logger \"novaclient.client\"\n\nI\u0027m actually not sure what\u0027s the \"right\" way to do this in novaclient. I know you have used warnings.warn in novaclient/v1_1/__init__.py so maybe that\u0027s the best we can do here?","commit_id":"b73850452a0a8119aa5e52e71d0494d8ad79041e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a7893126f0397be9e202a2428dbe2780ab921d51","unresolved":false,"context_lines":[{"line_number":725,"context_line":"                    \"alternative version %(alternative)s instead.\") %"},{"line_number":726,"context_line":"                    {"},{"line_number":727,"context_line":"                        \"deprecated_version\": version,"},{"line_number":728,"context_line":"                        \"alternative\": DEPRECATED_VERSIONS[version]})"},{"line_number":729,"context_line":"        version \u003d DEPRECATED_VERSIONS[version]"},{"line_number":730,"context_line":"    try:"},{"line_number":731,"context_line":"        return importutils.import_class("}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa53dc9_d76d6505","line":728,"in_reply_to":"9aa53dc9_a5919d9b","updated":"2015-04-08 12:20:57.000000000","message":"Forgot that logging requires setting handler and log level...Fixed","commit_id":"b73850452a0a8119aa5e52e71d0494d8ad79041e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6c5bc9af84ac7af3c24e7a9976d2832941f79f6d","unresolved":false,"context_lines":[{"line_number":725,"context_line":"                    \"alternative version %(alternative)s instead.\") %"},{"line_number":726,"context_line":"                    {"},{"line_number":727,"context_line":"                        \"deprecated_version\": version,"},{"line_number":728,"context_line":"                        \"alternative\": DEPRECATED_VERSIONS[version]})"},{"line_number":729,"context_line":"        version \u003d DEPRECATED_VERSIONS[version]"},{"line_number":730,"context_line":"    try:"},{"line_number":731,"context_line":"        return importutils.import_class("}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa53dc9_a5919d9b","line":728,"in_reply_to":"9aa53dc9_aaf28ad0","updated":"2015-04-08 00:29:16.000000000","message":"To correct myself, it looks like there is other logging but not global logging like this, elsewhere in novaclient. For example, HTTPClient has a logger where it adds a StreamHandler to it. So maybe we can add a handler to this logger, LOG.","commit_id":"b73850452a0a8119aa5e52e71d0494d8ad79041e"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"d6448a0bb836d1c51f486dee2e4e56d3089a2f50","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            data \u003d json.loads(kwargs[\u0027data\u0027])"},{"line_number":301,"context_line":"            self._redact(data, [\u0027auth\u0027, \u0027passwordCredentials\u0027, \u0027password\u0027])"},{"line_number":302,"context_line":"            string_parts.append(\" -d \u0027%s\u0027\" % json.dumps(data))"},{"line_number":303,"context_line":"        self._logger.debug(\"REQ: %s\" % \"\".join(string_parts))"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def http_log_resp(self, resp):"},{"line_number":306,"context_line":"        if not self.http_log_debug:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_a18f1029","line":303,"updated":"2015-04-09 11:22:55.000000000","message":"I\u0027m just wondering, here should be -\u003e\n fixtures._fixtures.logger.FakeLogger object?\nBut when your tests run, here you have -\u003e \n logging.Logger object.","commit_id":"e7486d78a5ba75a2a9a73cb39c2167d3c3feaf50"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"4fd75e6276852dfaae070a0b02294efb5c8c12c9","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            data \u003d json.loads(kwargs[\u0027data\u0027])"},{"line_number":301,"context_line":"            self._redact(data, [\u0027auth\u0027, \u0027passwordCredentials\u0027, \u0027password\u0027])"},{"line_number":302,"context_line":"            string_parts.append(\" -d \u0027%s\u0027\" % json.dumps(data))"},{"line_number":303,"context_line":"        self._logger.debug(\"REQ: %s\" % \"\".join(string_parts))"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def http_log_resp(self, resp):"},{"line_number":306,"context_line":"        if not self.http_log_debug:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_cabc69de","line":303,"in_reply_to":"9aa53dc9_a18f1029","updated":"2015-04-09 14:03:28.000000000","message":"How does your question relate to my change?","commit_id":"e7486d78a5ba75a2a9a73cb39c2167d3c3feaf50"}],"novaclient/shell.py":[{"author":{"_account_id":14027,"name":"Michal Rostecki","email":"mrostecki@suse.de","username":"mrostecki"},"change_message_id":"938a7d3c5ce624f3ccd73b16324c69e1f31bff9e","unresolved":false,"context_lines":[{"line_number":486,"context_line":"        version_str \u003d \"v%s\" % version.replace(\u0027.\u0027, \u0027_\u0027)"},{"line_number":487,"context_line":"        # NOTE(andreykurilin): v1.1 uses implementation of v2, so we should"},{"line_number":488,"context_line":"        # discover contrib modules in novaclient.v2 dir."},{"line_number":489,"context_line":"        if version_str \u003d\u003d \"v1_1\":"},{"line_number":490,"context_line":"            version_str \u003d \"v2\""},{"line_number":491,"context_line":"        ext_path \u003d os.path.join(module_path, version_str, \u0027contrib\u0027)"},{"line_number":492,"context_line":"        ext_glob \u003d os.path.join(ext_path, \"*.py\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_f8d739eb","line":489,"updated":"2015-03-31 16:51:35.000000000","message":"In novaclient/client.py you are using dictionary to map versions. Here you\u0027re just using if directive. Maybe it would be good to have one util to map deprecated version which will be used everywhere?\n\nJust proposing. Let me know whether it makes sense for you.","commit_id":"7f41275514869c2d75597d1d896add1b53ede355"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"5ec0165c20a9d29d56227a47580e0f00b56fa917","unresolved":false,"context_lines":[{"line_number":486,"context_line":"        version_str \u003d \"v%s\" % version.replace(\u0027.\u0027, \u0027_\u0027)"},{"line_number":487,"context_line":"        # NOTE(andreykurilin): v1.1 uses implementation of v2, so we should"},{"line_number":488,"context_line":"        # discover contrib modules in novaclient.v2 dir."},{"line_number":489,"context_line":"        if version_str \u003d\u003d \"v1_1\":"},{"line_number":490,"context_line":"            version_str \u003d \"v2\""},{"line_number":491,"context_line":"        ext_path \u003d os.path.join(module_path, version_str, \u0027contrib\u0027)"},{"line_number":492,"context_line":"        ext_glob \u003d os.path.join(ext_path, \"*.py\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_e302dd0a","line":489,"in_reply_to":"da9b358b_f8d739eb","updated":"2015-03-31 23:07:40.000000000","message":"ok, I agree that it should be moved to one place, but I prefer to do it in future patches. Now, I\u0027m working on splitting [*] . As you can see, there is novaclient.api_versions module in [*], which is a home for such utils and mapping.\n\n[*] - https://review.openstack.org/#/c/152569/","commit_id":"7f41275514869c2d75597d1d896add1b53ede355"}]}
