)]}'
{"keystoneauth1/identity/base.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"55abfe103c93290da0274c720b1ee3203a9b22b2","unresolved":false,"context_lines":[{"line_number":379,"context_line":"            allow_version_hack\u003dallow_version_hack, **kwargs)"},{"line_number":380,"context_line":"        return endpoint_data.url if endpoint_data else None"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def get_api_version(self, session, service_type\u003dNone, interface\u003dNone,"},{"line_number":383,"context_line":"                        region_name\u003dNone, service_name\u003dNone, version\u003dNone,"},{"line_number":384,"context_line":"                        allow\u003d{}, allow_version_hack\u003dTrue,"},{"line_number":385,"context_line":"                        skip_discovery\u003dFalse, discover_versions\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_bc2d1196","line":382,"updated":"2017-08-16 13:20:28.000000000","message":"Would it be more appropriate to call it get_api_major_version? Otherwise it clashes with the microversion header name openstack-api-version which is confusing.","commit_id":"0e98071edae5c22fa28141131e344ef89798ae68"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"8507682c9e6eb73390b35570fbb405c4b6ecc4c3","unresolved":false,"context_lines":[{"line_number":379,"context_line":"            allow_version_hack\u003dallow_version_hack, **kwargs)"},{"line_number":380,"context_line":"        return endpoint_data.url if endpoint_data else None"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def get_api_version(self, session, service_type\u003dNone, interface\u003dNone,"},{"line_number":383,"context_line":"                        region_name\u003dNone, service_name\u003dNone, version\u003dNone,"},{"line_number":384,"context_line":"                        allow\u003d{}, allow_version_hack\u003dTrue,"},{"line_number":385,"context_line":"                        skip_discovery\u003dFalse, discover_versions\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_47ce525a","line":382,"in_reply_to":"9f436f4f_bc2d1196","updated":"2017-08-16 14:13:02.000000000","message":"wfm","commit_id":"0e98071edae5c22fa28141131e344ef89798ae68"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"55abfe103c93290da0274c720b1ee3203a9b22b2","unresolved":false,"context_lines":[{"line_number":449,"context_line":"        # here uses the latter rather than the former."},{"line_number":450,"context_line":"        min_version, max_version \u003d discover._normalize_version_args("},{"line_number":451,"context_line":"            version, min_version, max_version)"},{"line_number":452,"context_line":"        get_endpoint_data \u003d functools.partial("},{"line_number":453,"context_line":"            self.get_endpoint_data,"},{"line_number":454,"context_line":"            session, service_type\u003dservice_type, interface\u003dinterface,"},{"line_number":455,"context_line":"            region_name\u003dregion_name, service_name\u003dservice_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_d965871f","line":452,"range":{"start_line":452,"start_character":28,"end_line":452,"end_character":45},"updated":"2017-08-16 13:20:28.000000000","message":"Is this just to save LOC or does it have more significance?","commit_id":"0e98071edae5c22fa28141131e344ef89798ae68"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"8507682c9e6eb73390b35570fbb405c4b6ecc4c3","unresolved":false,"context_lines":[{"line_number":449,"context_line":"        # here uses the latter rather than the former."},{"line_number":450,"context_line":"        min_version, max_version \u003d discover._normalize_version_args("},{"line_number":451,"context_line":"            version, min_version, max_version)"},{"line_number":452,"context_line":"        get_endpoint_data \u003d functools.partial("},{"line_number":453,"context_line":"            self.get_endpoint_data,"},{"line_number":454,"context_line":"            session, service_type\u003dservice_type, interface\u003dinterface,"},{"line_number":455,"context_line":"            region_name\u003dregion_name, service_name\u003dservice_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_07672ab9","line":452,"range":{"start_line":452,"start_character":28,"end_line":452,"end_character":45},"in_reply_to":"9f436f4f_d965871f","updated":"2017-08-16 14:13:02.000000000","message":"Just to save LOC/copy-pasta.","commit_id":"0e98071edae5c22fa28141131e344ef89798ae68"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"55abfe103c93290da0274c720b1ee3203a9b22b2","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            # It\u0027s possible that no version was requested and the endpoint"},{"line_number":462,"context_line":"            # in the catalog has no version in the URL. A version has been"},{"line_number":463,"context_line":"            # requested, so now it\u0027s ok to run discovery."},{"line_number":464,"context_line":"            data \u003d get_endpoint_data(discover_versions\u003dTrue)"},{"line_number":465,"context_line":"        if not data:"},{"line_number":466,"context_line":"            return None"},{"line_number":467,"context_line":"        return data.api_version"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_d91c6779","line":464,"updated":"2017-08-16 13:20:28.000000000","message":"At first glance this looks like an unnecessary extra call, why not run with discover_versions\u003dTrue from the beginning if that\u0027s what we\u0027re after?","commit_id":"0e98071edae5c22fa28141131e344ef89798ae68"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"6234e504acf2571ec1c260e72c095c899b1225e2","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            # It\u0027s possible that no version was requested and the endpoint"},{"line_number":462,"context_line":"            # in the catalog has no version in the URL. A version has been"},{"line_number":463,"context_line":"            # requested, so now it\u0027s ok to run discovery."},{"line_number":464,"context_line":"            data \u003d get_endpoint_data(discover_versions\u003dTrue)"},{"line_number":465,"context_line":"        if not data:"},{"line_number":466,"context_line":"            return None"},{"line_number":467,"context_line":"        return data.api_version"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_ade83d7b","line":464,"in_reply_to":"9f436f4f_87e8bab2","updated":"2017-08-16 15:14:54.000000000","message":"Got it, thanks","commit_id":"0e98071edae5c22fa28141131e344ef89798ae68"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"8507682c9e6eb73390b35570fbb405c4b6ecc4c3","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            # It\u0027s possible that no version was requested and the endpoint"},{"line_number":462,"context_line":"            # in the catalog has no version in the URL. A version has been"},{"line_number":463,"context_line":"            # requested, so now it\u0027s ok to run discovery."},{"line_number":464,"context_line":"            data \u003d get_endpoint_data(discover_versions\u003dTrue)"},{"line_number":465,"context_line":"        if not data:"},{"line_number":466,"context_line":"            return None"},{"line_number":467,"context_line":"        return data.api_version"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_87e8bab2","line":464,"in_reply_to":"9f436f4f_d91c6779","updated":"2017-08-16 14:13:02.000000000","message":"Because there are many cases when major version can be satisfied without actually calling the discovery endpoint (like when the version is in the url) so if the user has a cloud with cinder v3 in the catalog as:\n\n  https://volume.example.com/v3\n\nand they do:\n\n  client \u003d adapter.Adapter(\n      session, service_type\u003d\u0027block-\n      storage\u0027, min_version\u003d2, max_version\u003d3)\n  volume_version \u003d client.get_api_version()\n\nThat can actually be satisfied with no api calls other than getting the token.\n\nBut - if their catalog has an unversioned endpoint:\n\n  https://volume.example.com\n\nAnd they do this:\n\n  client \u003d adapter.Adapter(\n      session, service_type\u003d\u0027block-storage\u0027)\n\nclient is now set up to \"use whatever is in the catalog\", but since the url doesn\u0027t have a version, get_endpoint_data(discover_versions\u003dFalse) will have api_version\u003dNone (no version was requested so it didn\u0027t need to round trip) In order to find out what version the endpoint actually is, we have to make a round trip. Which is why we then go ahead and try again with discover_versions\u003dTrue.\n\n(and all the above is why having a method is useful - the user should hopefully not need to think about any of that)","commit_id":"0e98071edae5c22fa28141131e344ef89798ae68"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"b2e906cbd4202092136f491a046a737563b9588b","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        return endpoint_data.url if endpoint_data else None"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def get_api_major_version(self, session, service_type\u003dNone, interface\u003dNone,"},{"line_number":383,"context_line":"                              region_name\u003dNone, service_name\u003dNone, version\u003dNone,"},{"line_number":384,"context_line":"                              allow\u003d{}, allow_version_hack\u003dTrue,"},{"line_number":385,"context_line":"                              skip_discovery\u003dFalse, discover_versions\u003dFalse,"},{"line_number":386,"context_line":"                              min_version\u003dNone, max_version\u003dNone,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_0b34ccdc","line":383,"range":{"start_line":383,"start_character":67,"end_line":383,"end_character":80},"updated":"2017-08-16 18:55:23.000000000","message":"Line is \u003e79","commit_id":"c02fbc08ce0f5f034c229a3ad03a1997e0e38a05"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"0a425d2a1383ef9385aff0d6f23727407643a675","unresolved":false,"context_lines":[{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def get_api_major_version(self, session, service_type\u003dNone, interface\u003dNone,"},{"line_number":383,"context_line":"                              region_name\u003dNone, service_name\u003dNone, version\u003dNone,"},{"line_number":384,"context_line":"                              allow\u003d{}, allow_version_hack\u003dTrue,"},{"line_number":385,"context_line":"                              skip_discovery\u003dFalse, discover_versions\u003dFalse,"},{"line_number":386,"context_line":"                              min_version\u003dNone, max_version\u003dNone,"},{"line_number":387,"context_line":"                              **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_2b6790eb","line":384,"range":{"start_line":384,"start_character":30,"end_line":384,"end_character":39},"updated":"2017-08-16 18:56:35.000000000","message":"Do not use mutable default arguments. This is bad, make it None and in the code If None, allow \u003d {}","commit_id":"c02fbc08ce0f5f034c229a3ad03a1997e0e38a05"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"c082edd13eeb5431459ee968ea54699e3d947ac3","unresolved":false,"context_lines":[{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def get_api_major_version(self, session, service_type\u003dNone, interface\u003dNone,"},{"line_number":383,"context_line":"                              region_name\u003dNone, service_name\u003dNone,"},{"line_number":384,"context_line":"                              version\u003dNone, allow\u003dNone, allow_version_hack\u003dTrue,"},{"line_number":385,"context_line":"                              skip_discovery\u003dFalse, discover_versions\u003dFalse,"},{"line_number":386,"context_line":"                              min_version\u003dNone, max_version\u003dNone,"},{"line_number":387,"context_line":"                              **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f436f4f_cb86c466","line":384,"range":{"start_line":384,"start_character":55,"end_line":384,"end_character":80},"updated":"2017-08-16 18:58:15.000000000","message":"This is also going to be \u003e 79.","commit_id":"9bc9db143fab838105ddc1c97d21b903d42109c8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fdec5d953526b4de302090b5024650017cc41756","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        :rtype: tuple or None"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"        .. note:: Implementation notes follow. Users should not need to wrap"},{"line_number":449,"context_line":"                  their head around these implementation note."},{"line_number":450,"context_line":"                  `get_api_major_version` should do what is expected with the"},{"line_number":451,"context_line":"                  least possible cost while still consistently returning a"},{"line_number":452,"context_line":"                  value if possible."}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_7d918e99","line":449,"range":{"start_line":449,"start_character":57,"end_line":449,"end_character":61},"updated":"2017-08-23 21:53:11.000000000","message":"notes","commit_id":"9d1e84065555f95c7d2195a1e3f9987879c59b95"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c9429cb115f0e4e89ec58ed6cb1e64d645008223","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        :rtype: tuple or None"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"        .. note:: Implementation notes follow. Users should not need to wrap"},{"line_number":451,"context_line":"                  their head around these implementation note."},{"line_number":452,"context_line":"                  `get_api_major_version` should do what is expected with the"},{"line_number":453,"context_line":"                  least possible cost while still consistently returning a"},{"line_number":454,"context_line":"                  value if possible."}],"source_content_type":"text/x-python","patch_set":7,"id":"7f287b81_8138413d","line":451,"range":{"start_line":451,"start_character":57,"end_line":451,"end_character":61},"updated":"2017-08-24 13:30:00.000000000","message":"notes","commit_id":"0fa07d01c581ecfe53a701c26e365b62bd47b411"}]}
