)]}'
{"keystoneauth1/discover.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"12bef15c53285aebf0b87b92ba3f210689b5b024","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    :rtype: bool"},{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":"    if required[0] \u003d\u003d \u0027latest\u0027:"},{"line_number":130,"context_line":"        return True"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    # major versions must be the same (e.g. even though v2 is a lower"},{"line_number":133,"context_line":"    # version than v3 we can\u0027t use it if v2 was requested)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_16b42dd0","line":130,"updated":"2017-06-15 18:35:15.000000000","message":"so it doesn\u0027t matter what the candidate is, we assume it is always the latest? is it safe? this is a public method, we need comments here (and improve method docs) as the logic is not obvious (on why this works)","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"bea18650dd06f3249af9a3cec076987d98421390","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    :rtype: bool"},{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":"    if required[0] \u003d\u003d \u0027latest\u0027:"},{"line_number":130,"context_line":"        return True"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    # major versions must be the same (e.g. even though v2 is a lower"},{"line_number":133,"context_line":"    # version than v3 we can\u0027t use it if v2 was requested)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_f92f8f3c","line":130,"in_reply_to":"7f231b9d_16b42dd0","updated":"2017-06-24 15:42:14.000000000","message":"Good call - although based on Colleen\u0027s suggestion to look at Jamie\u0027s patch, went ahead and reworked the whole thing.","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"12bef15c53285aebf0b87b92ba3f210689b5b024","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        if version:"},{"line_number":284,"context_line":"            version \u003d normalize_version_number(version)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        for data in self.version_data(reverse\u003dTrue, **kwargs):"},{"line_number":287,"context_line":"            if url and data[\u0027url\u0027] \u003d\u003d url:"},{"line_number":288,"context_line":"                return data"},{"line_number":289,"context_line":"            if version and version_match(version, data[\u0027version\u0027]):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_d6f6b5d7","line":286,"updated":"2017-06-15 18:35:15.000000000","message":"Is this ordered from latest to oldest?","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"bea18650dd06f3249af9a3cec076987d98421390","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        if version:"},{"line_number":284,"context_line":"            version \u003d normalize_version_number(version)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        for data in self.version_data(reverse\u003dTrue, **kwargs):"},{"line_number":287,"context_line":"            if url and data[\u0027url\u0027] \u003d\u003d url:"},{"line_number":288,"context_line":"                return data"},{"line_number":289,"context_line":"            if version and version_match(version, data[\u0027version\u0027]):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_b925975e","line":286,"in_reply_to":"7f231b9d_d6f6b5d7","updated":"2017-06-24 15:42:14.000000000","message":"Yes.","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"2f7559a946804fda2f2d32bd97fc12a76ba43d59","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        for data in self.version_data(reverse\u003dTrue, **kwargs):"},{"line_number":287,"context_line":"            if url and data[\u0027url\u0027] \u003d\u003d url:"},{"line_number":288,"context_line":"                return data"},{"line_number":289,"context_line":"            if version and version_match(version, data[\u0027version\u0027]):"},{"line_number":290,"context_line":"                return data"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_181b7281","line":288,"updated":"2017-06-23 19:22:20.000000000","message":"So if I say version\u003dlatest and url\u003dhttp://nova/v2.1 that will get me the latest microversion, ya?","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"bea18650dd06f3249af9a3cec076987d98421390","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        for data in self.version_data(reverse\u003dTrue, **kwargs):"},{"line_number":287,"context_line":"            if url and data[\u0027url\u0027] \u003d\u003d url:"},{"line_number":288,"context_line":"                return data"},{"line_number":289,"context_line":"            if version and version_match(version, data[\u0027version\u0027]):"},{"line_number":290,"context_line":"                return data"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_797fff14","line":288,"in_reply_to":"5f201791_181b7281","updated":"2017-06-24 15:42:14.000000000","message":"No. This is all about finding the endpoint of latest major API version. That endpoint will have a supported min and max microversion range associated with it as metadata. Using microversions then is a per-REST call decision.\n\nIf url\u003dhttp://nova/v2.1, you\u0027ll grab the version discovery doc for http://nova/v2.1 which is pretty much just going to contain http://nova/v2.1, so that\u0027ll be the endpoint. But then we\u0027ll also tell you what the microversion range is.\n\nIf url is http://keystone and version is latest, it\u0027ll get the version discovery doc, find 2 and 3, and return you http://keystone/v3 - along with info about the fact that it\u0027s v3 (so you don\u0027t have to infer from the URL) and that it doesn\u0027t have microversion information.","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"12bef15c53285aebf0b87b92ba3f210689b5b024","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        for data in self.version_data(reverse\u003dTrue, **kwargs):"},{"line_number":287,"context_line":"            if url and data[\u0027url\u0027] \u003d\u003d url:"},{"line_number":288,"context_line":"                return data"},{"line_number":289,"context_line":"            if version and version_match(version, data[\u0027version\u0027]):"},{"line_number":290,"context_line":"                return data"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_f6e77111","line":289,"updated":"2017-06-15 18:35:15.000000000","message":"If so, the code makes sense since version_match will return true if version\u003d\u003d\u0027latest\u0027, regardles what the value of data[\u0027version\u0027] is.\n\nHowever, is it a safe assumption that version_match is always called with the latest version first?","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"bea18650dd06f3249af9a3cec076987d98421390","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        for data in self.version_data(reverse\u003dTrue, **kwargs):"},{"line_number":287,"context_line":"            if url and data[\u0027url\u0027] \u003d\u003d url:"},{"line_number":288,"context_line":"                return data"},{"line_number":289,"context_line":"            if version and version_match(version, data[\u0027version\u0027]):"},{"line_number":290,"context_line":"                return data"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_5920c348","line":289,"in_reply_to":"7f231b9d_f6e77111","updated":"2017-06-24 15:42:14.000000000","message":"Yes - this is correct, and it is a safe assumption, version_data returns the data in that order.","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"2f7559a946804fda2f2d32bd97fc12a76ba43d59","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            if url and data[\u0027url\u0027] \u003d\u003d url:"},{"line_number":288,"context_line":"                return data"},{"line_number":289,"context_line":"            if version and version_match(version, data[\u0027version\u0027]):"},{"line_number":290,"context_line":"                return data"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        return None"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_1b292c89","line":290,"updated":"2017-06-23 19:22:20.000000000","message":"Have you seen Jamie\u0027s version of this? https://review.openstack.org/#/c/458287/1/keystoneauth1/discover.py I don\u0027t think it accounts for microversions but it\u0027s a little easier to follow the logic when it\u0027s all here instead of in version_match()","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"bea18650dd06f3249af9a3cec076987d98421390","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            if url and data[\u0027url\u0027] \u003d\u003d url:"},{"line_number":288,"context_line":"                return data"},{"line_number":289,"context_line":"            if version and version_match(version, data[\u0027version\u0027]):"},{"line_number":290,"context_line":"                return data"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        return None"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_b9da3748","line":290,"in_reply_to":"5f201791_1b292c89","updated":"2017-06-24 15:42:14.000000000","message":"Indeed. I\u0027ll go ahead and suck his in.","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"12bef15c53285aebf0b87b92ba3f210689b5b024","unresolved":false,"context_lines":[{"line_number":501,"context_line":"                except Exception:"},{"line_number":502,"context_line":"                    pass"},{"line_number":503,"context_line":"            if url_version:"},{"line_number":504,"context_line":"                if version_match(version, url_version):"},{"line_number":505,"context_line":"                    self._catalog_matches_version \u003d True"},{"line_number":506,"context_line":"                    # This endpoint matches the version request, try it first"},{"line_number":507,"context_line":"                    yield urllib.parse.ParseResult("}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_56a745be","line":504,"updated":"2017-06-15 18:35:15.000000000","message":"this will always match if version\u003d\u003d\u0027latest\u0027, see comment in L289","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"2f7559a946804fda2f2d32bd97fc12a76ba43d59","unresolved":false,"context_lines":[{"line_number":501,"context_line":"                except Exception:"},{"line_number":502,"context_line":"                    pass"},{"line_number":503,"context_line":"            if url_version:"},{"line_number":504,"context_line":"                if version_match(version, url_version):"},{"line_number":505,"context_line":"                    self._catalog_matches_version \u003d True"},{"line_number":506,"context_line":"                    # This endpoint matches the version request, try it first"},{"line_number":507,"context_line":"                    yield urllib.parse.ParseResult("}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_9b41bc3c","line":504,"in_reply_to":"7f231b9d_56a745be","updated":"2017-06-23 19:22:20.000000000","message":"I think that\u0027s fine, if we say we want latest then the version in the URL is irrelevant","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"}]}
