)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1b82aaa7992ce716275aa66c2c0e21e4cd687231","unresolved":false,"context_lines":[{"line_number":17,"context_line":"directly as the legacy model does not use the get_endpoint features of"},{"line_number":18,"context_line":"an identity plugin."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Blueprint: endpoint-version-query"},{"line_number":21,"context_line":"Change-Id: I277f2f6ad6c8cd44f1a9c06cf07d62bc8f8b383b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1ae5cdf2_12ec9eba","line":20,"updated":"2014-06-11 22:02:15.000000000","message":"Does this require a spec? https://github.com/openstack/keystone-specs/tree/master/specs/keystoneclient","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"30ab39ef8e7ebd1828ed6ba41c5c91a5339c618d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"directly as the legacy model does not use the get_endpoint features of"},{"line_number":18,"context_line":"an identity plugin."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Blueprint: endpoint-version-query"},{"line_number":21,"context_line":"Change-Id: I277f2f6ad6c8cd44f1a9c06cf07d62bc8f8b383b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1ae5cdf2_db308aeb","line":20,"in_reply_to":"1ae5cdf2_12ec9eba","updated":"2014-06-12 03:13:59.000000000","message":"mmmm, crap i don\u0027t think so - it\u0027s been around for a fair while.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1b89d22811bd6bcad14af0ef3ef90f82aff60e0","unresolved":false,"context_lines":[{"line_number":16,"context_line":"This will only work for applications that create session objects"},{"line_number":17,"context_line":"directly as the legacy model does not use the get_endpoint features of"},{"line_number":18,"context_line":"an identity plugin."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Blueprint: endpoint-version-query"},{"line_number":21,"context_line":"Change-Id: I277f2f6ad6c8cd44f1a9c06cf07d62bc8f8b383b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1ae5cdf2_1e900eec","line":19,"updated":"2014-06-12 15:25:07.000000000","message":"Also mention that the _discovery.Discovery docstrings were corrected, or put that change in a separate commit.","commit_id":"1c890395d27c42c1eb9e5158c7567f45af090bb5"}],"keystoneclient/_discover.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1b89d22811bd6bcad14af0ef3ef90f82aff60e0","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        :param tuple version: The version is always a minimum version in the"},{"line_number":234,"context_line":"            same major release as there should be no compatibility issues with"},{"line_number":235,"context_line":"            using a version newer than the one asked for."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        :returns dict: the endpoint data for a URL that matches the required"},{"line_number":238,"context_line":"                       version (the format is described in version_data)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_bea1da47","line":235,"updated":"2014-06-12 15:25:07.000000000","message":"fixing the _discover docstrings should be done in a separate commit since it\u0027s unrelated. If not, at least mention it in the commit message.","commit_id":"1c890395d27c42c1eb9e5158c7567f45af090bb5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5426720fb06334b4af756d8897be785e06d9afd9","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        :param tuple version: The version is always a minimum version in the"},{"line_number":234,"context_line":"            same major release as there should be no compatibility issues with"},{"line_number":235,"context_line":"            using a version newer than the one asked for."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        :returns dict: the endpoint data for a URL that matches the required"},{"line_number":238,"context_line":"                       version (the format is described in version_data)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_3b359cf6","line":235,"in_reply_to":"1ae5cdf2_bea1da47","updated":"2014-06-22 21:21:56.000000000","message":"Done","commit_id":"1c890395d27c42c1eb9e5158c7567f45af090bb5"}],"keystoneclient/auth/identity/base.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"c5451fa7534d6ddde05cad3ca6676daffc7c1a00","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            # NOTE(jamielennox): This may not be the best thing to default to"},{"line_number":136,"context_line":"            # but is here for backwards compatibility. It may be worth"},{"line_number":137,"context_line":"            # defaulting to the most recent version."},{"line_number":138,"context_line":"            return sc_url"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # NOTE(jamielennox): It\u0027s possible that the _endpoint_cache should be"},{"line_number":141,"context_line":"        # located on the session object. There are pros/cons to each depending"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2FzSE%3D","line":138,"updated":"2014-04-26 20:28:44.000000000","message":"Its OK for now.  We want the \"last blessed\" version.","commit_id":"51c545d7b03c15eb942a0797ab55f0ec40b918b3"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fece2a71eb18bc24847a24780e4b18e9f1691648","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            # NOTE(jamielennox): This may not be the best thing to default to"},{"line_number":136,"context_line":"            # but is here for backwards compatibility. It may be worth"},{"line_number":137,"context_line":"            # defaulting to the most recent version."},{"line_number":138,"context_line":"            return sc_url"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # NOTE(jamielennox): It\u0027s possible that the _endpoint_cache should be"},{"line_number":141,"context_line":"        # located on the session object. There are pros/cons to each depending"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2FxqQ%3D","line":138,"in_reply_to":"AAAAXX%2F%2FzSE%3D","updated":"2014-04-28 01:50:08.000000000","message":"Yea, i\u0027m not sure how we offer that tough. What if the last blessed changes and you suddenly get pointed to a new API. \n\nOn the other hand the service catalog or a bunch of other things could change. \n\nIn reality i don\u0027t see this parameter being unspecified if it comes through the client code but we can\u0027t make it required so there has to be some default.","commit_id":"51c545d7b03c15eb942a0797ab55f0ec40b918b3"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"c5451fa7534d6ddde05cad3ca6676daffc7c1a00","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        # NOTE(jamielennox): It\u0027s possible that the _endpoint_cache should be"},{"line_number":141,"context_line":"        # located on the session object. There are pros/cons to each depending"},{"line_number":142,"context_line":"        # on if it\u0027s more likely to have one plugin -\u003e multiple sessions or"},{"line_number":143,"context_line":"        # multiple plugins -\u003e one session. Maybe we should do both?"},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            disc \u003d self._endpoint_cache[sc_url]"},{"line_number":146,"context_line":"        except KeyError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2FzR8%3D","line":143,"updated":"2014-04-26 20:28:44.000000000","message":"Could it be a shared pool of cached objects?","commit_id":"51c545d7b03c15eb942a0797ab55f0ec40b918b3"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fece2a71eb18bc24847a24780e4b18e9f1691648","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        # NOTE(jamielennox): It\u0027s possible that the _endpoint_cache should be"},{"line_number":141,"context_line":"        # located on the session object. There are pros/cons to each depending"},{"line_number":142,"context_line":"        # on if it\u0027s more likely to have one plugin -\u003e multiple sessions or"},{"line_number":143,"context_line":"        # multiple plugins -\u003e one session. Maybe we should do both?"},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            disc \u003d self._endpoint_cache[sc_url]"},{"line_number":146,"context_line":"        except KeyError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2FxqI%3D","line":143,"in_reply_to":"AAAAXX%2F%2FzR8%3D","updated":"2014-04-28 01:50:08.000000000","message":"i generally don\u0027t like there being global data in a library. \n\nI was thinking we check session._endpoint_cache[sc_url] and fall back to self._endpoint_cache[sc_url] and have set it in both caches is a fairly global strategy.","commit_id":"51c545d7b03c15eb942a0797ab55f0ec40b918b3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b54ddffc267f8b6c2a13451d704972549485e830","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                                 Defaults to `public`."},{"line_number":111,"context_line":"        :param string region_name: The region the endpoint should exist in."},{"line_number":112,"context_line":"                                   (optional)"},{"line_number":113,"context_line":"        :param tuple version: The minimum version number required for this"},{"line_number":114,"context_line":"                              endpoint. (optional)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        :raises HttpError: An error from an invalid HTTP response."}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_71a8d777","line":113,"updated":"2014-05-22 17:58:33.000000000","message":"Isn\u0027t this the specific version and not a minimum version? the docstring for _discover.Discovery.url_for says it returns the url for the specified version and not for a minimum version.","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b54ddffc267f8b6c2a13451d704972549485e830","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        :param string region_name: The region the endpoint should exist in."},{"line_number":112,"context_line":"                                   (optional)"},{"line_number":113,"context_line":"        :param tuple version: The minimum version number required for this"},{"line_number":114,"context_line":"                              endpoint. (optional)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        :raises HttpError: An error from an invalid HTTP response."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_71461751","line":114,"updated":"2014-05-22 17:58:33.000000000","message":"the docstring should explain what the expected behavior is if version isn\u0027t provided.","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b54ddffc267f8b6c2a13451d704972549485e830","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        # NOTE(jamielennox): There is a cache located on both the session"},{"line_number":143,"context_line":"        # object and the auth plugin object so that they can be shared and the"},{"line_number":144,"context_line":"        # cache is still usable"},{"line_number":145,"context_line":"        for cache in (self._endpoint_cache, session._endpoint_cache):"},{"line_number":146,"context_line":"            disc \u003d cache.get(sc_url)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"            if disc:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_802b4fea","line":145,"updated":"2014-05-22 17:58:33.000000000","message":"this class shouldn\u0027t be accessing a private member of the session (_endpoint_cache).","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"6f377ff4e03d5f9bfa6af2abdc28a82b0e634cea","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        # NOTE(jamielennox): There is a cache located on both the session"},{"line_number":143,"context_line":"        # object and the auth plugin object so that they can be shared and the"},{"line_number":144,"context_line":"        # cache is still usable"},{"line_number":145,"context_line":"        for cache in (self._endpoint_cache, session._endpoint_cache):"},{"line_number":146,"context_line":"            disc \u003d cache.get(sc_url)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"            if disc:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_32e70314","line":145,"in_reply_to":"7adec928_802b4fea","updated":"2014-06-10 22:12:14.000000000","message":"hmm, i kind of need a \u0027friend\u0027 accessor. I don\u0027t want this to be visible outside of keystoneclient but as you can see i want to use it only within the plugin. \n\nI could do a\n\n    if not hasattr(session, \u0027_endpoint_cache\u0027): \n        session._endpoint_cache \u003d {} \n\nbut is that really cleaner?","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b54ddffc267f8b6c2a13451d704972549485e830","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            disc \u003d cache.get(sc_url)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"            if disc:"},{"line_number":149,"context_line":"                break"},{"line_number":150,"context_line":"        else:"},{"line_number":151,"context_line":"            try:"},{"line_number":152,"context_line":"                disc \u003d _discover.Discover(session, sc_url)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_7631ad0a","line":149,"updated":"2014-05-22 17:58:33.000000000","message":"according to the coverage report this case isn\u0027t tested.","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"6f377ff4e03d5f9bfa6af2abdc28a82b0e634cea","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            disc \u003d cache.get(sc_url)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"            if disc:"},{"line_number":149,"context_line":"                break"},{"line_number":150,"context_line":"        else:"},{"line_number":151,"context_line":"            try:"},{"line_number":152,"context_line":"                disc \u003d _discover.Discover(session, sc_url)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_52e2cf01","line":149,"in_reply_to":"7adec928_7631ad0a","updated":"2014-06-10 22:12:14.000000000","message":"Done","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b54ddffc267f8b6c2a13451d704972549485e830","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            try:"},{"line_number":152,"context_line":"                disc \u003d _discover.Discover(session, sc_url)"},{"line_number":153,"context_line":"            except (exceptions.HTTPError, exceptions.ConnectionError):"},{"line_number":154,"context_line":"                pass"},{"line_number":155,"context_line":"            else:"},{"line_number":156,"context_line":"                self._endpoint_cache[sc_url] \u003d disc"},{"line_number":157,"context_line":"                session._endpoint_cache[sc_url] \u003d disc"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_e00fb386","line":154,"updated":"2014-05-22 17:58:33.000000000","message":"Add a comment why it\u0027s ok to discard these errors.\n\nAlso, according to the coverage report this isn\u0027t tested.","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"6f377ff4e03d5f9bfa6af2abdc28a82b0e634cea","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            try:"},{"line_number":152,"context_line":"                disc \u003d _discover.Discover(session, sc_url)"},{"line_number":153,"context_line":"            except (exceptions.HTTPError, exceptions.ConnectionError):"},{"line_number":154,"context_line":"                pass"},{"line_number":155,"context_line":"            else:"},{"line_number":156,"context_line":"                self._endpoint_cache[sc_url] \u003d disc"},{"line_number":157,"context_line":"                session._endpoint_cache[sc_url] \u003d disc"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_72f18bcc","line":154,"in_reply_to":"7adec928_e00fb386","updated":"2014-06-10 22:12:14.000000000","message":"Done","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b54ddffc267f8b6c2a13451d704972549485e830","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                session._endpoint_cache[sc_url] \u003d disc"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        if not disc:"},{"line_number":160,"context_line":"            LOG.warn(\u0027Failed to contact discovery server. Assuming that \u0027"},{"line_number":161,"context_line":"                     \u0027this is an old endpoint type and we just use the \u0027"},{"line_number":162,"context_line":"                     \u0027endpoint from the service catalog\u0027)"},{"line_number":163,"context_line":"            return sc_url"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_d647e175","line":160,"updated":"2014-05-22 17:58:33.000000000","message":"according to the coverage report this isn\u0027t tested.","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"6f377ff4e03d5f9bfa6af2abdc28a82b0e634cea","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                session._endpoint_cache[sc_url] \u003d disc"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        if not disc:"},{"line_number":160,"context_line":"            LOG.warn(\u0027Failed to contact discovery server. Assuming that \u0027"},{"line_number":161,"context_line":"                     \u0027this is an old endpoint type and we just use the \u0027"},{"line_number":162,"context_line":"                     \u0027endpoint from the service catalog\u0027)"},{"line_number":163,"context_line":"            return sc_url"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_92ec57f5","line":160,"in_reply_to":"7adec928_d647e175","updated":"2014-06-10 22:12:14.000000000","message":"Done","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b54ddffc267f8b6c2a13451d704972549485e830","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        if not disc:"},{"line_number":160,"context_line":"            LOG.warn(\u0027Failed to contact discovery server. Assuming that \u0027"},{"line_number":161,"context_line":"                     \u0027this is an old endpoint type and we just use the \u0027"},{"line_number":162,"context_line":"                     \u0027endpoint from the service catalog\u0027)"},{"line_number":163,"context_line":"            return sc_url"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        return disc.url_for(version)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_d141ab0c","line":162,"updated":"2014-05-22 17:58:33.000000000","message":"This message is going to need more info -- which discovery server were we trying to contact? What was the problem?\n\nAlso, add a . at the end of the sentence.","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"6f377ff4e03d5f9bfa6af2abdc28a82b0e634cea","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        if not disc:"},{"line_number":160,"context_line":"            LOG.warn(\u0027Failed to contact discovery server. Assuming that \u0027"},{"line_number":161,"context_line":"                     \u0027this is an old endpoint type and we just use the \u0027"},{"line_number":162,"context_line":"                     \u0027endpoint from the service catalog\u0027)"},{"line_number":163,"context_line":"            return sc_url"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        return disc.url_for(version)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_b2ba33df","line":162,"in_reply_to":"7adec928_d141ab0c","updated":"2014-06-10 22:12:14.000000000","message":"Done","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1b82aaa7992ce716275aa66c2c0e21e4cd687231","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        return self.auth_ref"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def invalidate(self):"},{"line_number":99,"context_line":"        self.auth_ref \u003d None"},{"line_number":100,"context_line":"        return True"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_925c2e7f","line":98,"updated":"2014-06-11 22:02:15.000000000","message":"doc strings to be consistent with the rest of the public methods here.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"30ab39ef8e7ebd1828ed6ba41c5c91a5339c618d","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        return self.auth_ref"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def invalidate(self):"},{"line_number":99,"context_line":"        self.auth_ref \u003d None"},{"line_number":100,"context_line":"        return True"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_fb2d4690","line":98,"in_reply_to":"1ae5cdf2_925c2e7f","updated":"2014-06-12 03:13:59.000000000","message":"I agree, i\u0027ll add this as a different patch though because i\u0027ve just moved this function from below.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"321e40d0eec1ebef4891c5f79c0df2a788731d0a","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                                 Defaults to `public`."},{"line_number":115,"context_line":"        :param string region_name: The region the endpoint should exist in."},{"line_number":116,"context_line":"                                   (optional)"},{"line_number":117,"context_line":"        :param tuple version: The minimum version number required for this"},{"line_number":118,"context_line":"                              endpoint. (optional)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        :raises HttpError: An error from an invalid HTTP response."}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_12149ee7","line":117,"updated":"2014-06-11 21:17:30.000000000","message":"version is passed to Discover.url_for, which takes the specific version and not a minimum version.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"30ab39ef8e7ebd1828ed6ba41c5c91a5339c618d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                                 Defaults to `public`."},{"line_number":115,"context_line":"        :param string region_name: The region the endpoint should exist in."},{"line_number":116,"context_line":"                                   (optional)"},{"line_number":117,"context_line":"        :param tuple version: The minimum version number required for this"},{"line_number":118,"context_line":"                              endpoint. (optional)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        :raises HttpError: An error from an invalid HTTP response."}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_bb657ee2","line":117,"in_reply_to":"1ae5cdf2_12149ee7","updated":"2014-06-12 03:13:59.000000000","message":"This is simply bad wording between the two places, fixed in discovery.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1b89d22811bd6bcad14af0ef3ef90f82aff60e0","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            except (exceptions.HTTPError, exceptions.ConnectionError):"},{"line_number":170,"context_line":"                LOG.warn(\u0027Failed to contact discovery server at %s. Assuming \u0027"},{"line_number":171,"context_line":"                         \u0027that this is an old endpoint type and we just use \u0027"},{"line_number":172,"context_line":"                         \u0027the endpoint from the service catalog.\u0027)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"                return sc_url"},{"line_number":175,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_3e486ab2","line":172,"updated":"2014-06-12 15:25:07.000000000","message":"Suggest reword this -- change \"we just use...\" to \"the endpoint from the service catalog (%s) will be used.\" % sc_url\n\nI don\u0027t think users will know who \"we\" are.","commit_id":"1c890395d27c42c1eb9e5158c7567f45af090bb5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5426720fb06334b4af756d8897be785e06d9afd9","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            except (exceptions.HTTPError, exceptions.ConnectionError):"},{"line_number":170,"context_line":"                LOG.warn(\u0027Failed to contact discovery server at %s. Assuming \u0027"},{"line_number":171,"context_line":"                         \u0027that this is an old endpoint type and we just use \u0027"},{"line_number":172,"context_line":"                         \u0027the endpoint from the service catalog.\u0027)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"                return sc_url"},{"line_number":175,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_83e17dfe","line":172,"in_reply_to":"1ae5cdf2_3e486ab2","updated":"2014-06-22 21:21:56.000000000","message":"Done","commit_id":"1c890395d27c42c1eb9e5158c7567f45af090bb5"}],"keystoneclient/session.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"321e40d0eec1ebef4891c5f79c0df2a788731d0a","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        if user_agent is not None:"},{"line_number":112,"context_line":"            self.user_agent \u003d user_agent"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # discovered endpoint cache for auth plugins"},{"line_number":115,"context_line":"        self._endpoint_cache \u003d {}"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    @utils.positional(enforcement\u003dutils.positional.WARN)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_7255e2c0","line":114,"updated":"2014-06-11 21:17:30.000000000","message":"add a note that this is accessed by keystoneclient.auth.identity.base.BaseIdentityPlugin","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"30ab39ef8e7ebd1828ed6ba41c5c91a5339c618d","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        if user_agent is not None:"},{"line_number":112,"context_line":"            self.user_agent \u003d user_agent"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # discovered endpoint cache for auth plugins"},{"line_number":115,"context_line":"        self._endpoint_cache \u003d {}"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    @utils.positional(enforcement\u003dutils.positional.WARN)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_7b005666","line":114,"in_reply_to":"1ae5cdf2_7255e2c0","updated":"2014-06-12 03:13:59.000000000","message":"Done","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"}],"keystoneclient/tests/auth/test_identity_common.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"321e40d0eec1ebef4891c5f79c0df2a788731d0a","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    TEST_ROOT_URL \u003d \u0027http://127.0.0.1:5000/\u0027"},{"line_number":29,"context_line":"    TEST_ROOT_ADMIN_URL \u003d \u0027http://127.0.0.1:35357/\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    TEST_COMPUTE_PUBLIC \u003d \"http://nova/novapi/public\""},{"line_number":32,"context_line":"    TEST_COMPUTE_INTERNAL \u003d \"http://nova/novapi/internal\""},{"line_number":33,"context_line":"    TEST_COMPUTE_ADMIN \u003d \"http://nova/novapi/admin\""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_f2ed72f1","line":31,"updated":"2014-06-11 21:17:30.000000000","message":"use \u0027 for strings consistently.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"30ab39ef8e7ebd1828ed6ba41c5c91a5339c618d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    TEST_ROOT_URL \u003d \u0027http://127.0.0.1:5000/\u0027"},{"line_number":29,"context_line":"    TEST_ROOT_ADMIN_URL \u003d \u0027http://127.0.0.1:35357/\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    TEST_COMPUTE_PUBLIC \u003d \"http://nova/novapi/public\""},{"line_number":32,"context_line":"    TEST_COMPUTE_INTERNAL \u003d \"http://nova/novapi/internal\""},{"line_number":33,"context_line":"    TEST_COMPUTE_ADMIN \u003d \"http://nova/novapi/admin\""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_7b37764d","line":31,"in_reply_to":"1ae5cdf2_f2ed72f1","updated":"2014-06-12 03:13:59.000000000","message":"Done","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"321e40d0eec1ebef4891c5f79c0df2a788731d0a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    TEST_COMPUTE_INTERNAL \u003d \"http://nova/novapi/internal\""},{"line_number":33,"context_line":"    TEST_COMPUTE_ADMIN \u003d \"http://nova/novapi/admin\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    TEST_PASS \u003d \u0027password\u0027"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def setUp(self):"},{"line_number":38,"context_line":"        super(CommonIdentityTests, self).setUp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_32bb5ae6","line":35,"updated":"2014-06-11 21:17:30.000000000","message":"might as well use a random uuid.uuid4().hex for this.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"30ab39ef8e7ebd1828ed6ba41c5c91a5339c618d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    TEST_COMPUTE_INTERNAL \u003d \"http://nova/novapi/internal\""},{"line_number":33,"context_line":"    TEST_COMPUTE_ADMIN \u003d \"http://nova/novapi/admin\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    TEST_PASS \u003d \u0027password\u0027"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def setUp(self):"},{"line_number":38,"context_line":"        super(CommonIdentityTests, self).setUp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_9b3fe224","line":35,"in_reply_to":"1ae5cdf2_32bb5ae6","updated":"2014-06-12 03:13:59.000000000","message":"Done","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"321e40d0eec1ebef4891c5f79c0df2a788731d0a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        httpretty.enable()"},{"line_number":42,"context_line":"        self.addCleanup(httpretty.disable)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self.TEST_URL \u003d \u0027%s%s\u0027 % (self.TEST_ROOT_URL, self.VERSION)"},{"line_number":45,"context_line":"        self.TEST_ADMIN_URL \u003d \u0027%s%s\u0027 % (self.TEST_ROOT_ADMIN_URL, self.VERSION)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        disc_v2 \u003d {"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_72a8828c","line":44,"updated":"2014-06-11 21:17:30.000000000","message":"should be a docstring saying that subclass needs to define a VERSION.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"321e40d0eec1ebef4891c5f79c0df2a788731d0a","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                    \"type\": \"application/vnd.openstack.identity-v2.0+json\""},{"line_number":59,"context_line":"                },"},{"line_number":60,"context_line":"                {"},{"line_number":61,"context_line":"                    \"base\": \"application/xml\","},{"line_number":62,"context_line":"                    \"type\": \"application/vnd.openstack.identity-v2.0+xml\""},{"line_number":63,"context_line":"                }"},{"line_number":64,"context_line":"            ],"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_d2a07692","line":61,"updated":"2014-06-11 21:17:30.000000000","message":"I think we\u0027re going to remove this (the application/xml object in media-types). Also, seems like this could have just what\u0027s required, so just remove all of media-types.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"30ab39ef8e7ebd1828ed6ba41c5c91a5339c618d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                    \"type\": \"application/vnd.openstack.identity-v2.0+json\""},{"line_number":59,"context_line":"                },"},{"line_number":60,"context_line":"                {"},{"line_number":61,"context_line":"                    \"base\": \"application/xml\","},{"line_number":62,"context_line":"                    \"type\": \"application/vnd.openstack.identity-v2.0+xml\""},{"line_number":63,"context_line":"                }"},{"line_number":64,"context_line":"            ],"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_bb23be03","line":61,"in_reply_to":"1ae5cdf2_d2a07692","updated":"2014-06-12 03:13:59.000000000","message":"Done","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"321e40d0eec1ebef4891c5f79c0df2a788731d0a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            \"versions\": [disc_v2, disc_v3]"},{"line_number":93,"context_line":"        }"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # service catalog points to TEST_COMPUTE_ADMIN"},{"line_number":96,"context_line":"        self.stub_auth_data()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_72ade283","line":95,"updated":"2014-06-11 21:17:30.000000000","message":"what does this mean?","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"30ab39ef8e7ebd1828ed6ba41c5c91a5339c618d","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            \"versions\": [disc_v2, disc_v3]"},{"line_number":93,"context_line":"        }"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # service catalog points to TEST_COMPUTE_ADMIN"},{"line_number":96,"context_line":"        self.stub_auth_data()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_1bc83221","line":95,"in_reply_to":"1ae5cdf2_72ade283","updated":"2014-06-12 03:13:59.000000000","message":"Done","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"321e40d0eec1ebef4891c5f79c0df2a788731d0a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.stub_auth_data()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @abc.abstractmethod"},{"line_number":99,"context_line":"    def create_auth_plugin(self):"},{"line_number":100,"context_line":"        pass"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_b2d12afd","line":99,"updated":"2014-06-11 21:17:30.000000000","message":"should have a comment or docstring saying what the subclass is supposed to do.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"30ab39ef8e7ebd1828ed6ba41c5c91a5339c618d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.stub_auth_data()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @abc.abstractmethod"},{"line_number":99,"context_line":"    def create_auth_plugin(self):"},{"line_number":100,"context_line":"        pass"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_3bcdee31","line":99,"in_reply_to":"1ae5cdf2_b2d12afd","updated":"2014-06-12 03:13:59.000000000","message":"Done","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"321e40d0eec1ebef4891c5f79c0df2a788731d0a","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        pass"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @abc.abstractmethod"},{"line_number":103,"context_line":"    def stub_auth_data(self):"},{"line_number":104,"context_line":"        pass"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def test_discovering(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_d2ceb659","line":103,"updated":"2014-06-11 21:17:30.000000000","message":"should have a docstring saying what the subclass is supposed to do.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"30ab39ef8e7ebd1828ed6ba41c5c91a5339c618d","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        pass"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @abc.abstractmethod"},{"line_number":103,"context_line":"    def stub_auth_data(self):"},{"line_number":104,"context_line":"        pass"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def test_discovering(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_5bce3a2e","line":103,"in_reply_to":"1ae5cdf2_d2ceb659","updated":"2014-06-12 03:13:59.000000000","message":"Done","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"321e40d0eec1ebef4891c5f79c0df2a788731d0a","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        self.assertEqual(new_body, resp.text)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def test_discovery_uses_session_cache(self):"},{"line_number":141,"context_line":"        # if the discovery url is hit twice the second one will fail"},{"line_number":142,"context_line":"        disc_body \u003d jsonutils.dumps(self.TEST_DISCOVERY)"},{"line_number":143,"context_line":"        disc_responses \u003d [httpretty.Response(body\u003ddisc_body, status\u003d200),"},{"line_number":144,"context_line":"                          httpretty.Response(body\u003d\u0027\u0027, status\u003d500)]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_f24572b4","line":141,"updated":"2014-06-11 21:17:30.000000000","message":"this comment is confusing because it looks like it\u0027s describing what the test is asserting. The test is asserting that the response is cached in the session so the discovery url is only hit once.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"30ab39ef8e7ebd1828ed6ba41c5c91a5339c618d","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        self.assertEqual(new_body, resp.text)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def test_discovery_uses_session_cache(self):"},{"line_number":141,"context_line":"        # if the discovery url is hit twice the second one will fail"},{"line_number":142,"context_line":"        disc_body \u003d jsonutils.dumps(self.TEST_DISCOVERY)"},{"line_number":143,"context_line":"        disc_responses \u003d [httpretty.Response(body\u003ddisc_body, status\u003d200),"},{"line_number":144,"context_line":"                          httpretty.Response(body\u003d\u0027\u0027, status\u003d500)]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_9b02823c","line":141,"in_reply_to":"1ae5cdf2_f24572b4","updated":"2014-06-12 03:13:59.000000000","message":"Done","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"321e40d0eec1ebef4891c5f79c0df2a788731d0a","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            self.assertEqual(body, resp.text)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def test_discovery_uses_plugin_cache(self):"},{"line_number":170,"context_line":"        # if the discovery url is hit twice the second one will fail"},{"line_number":171,"context_line":"        disc_body \u003d jsonutils.dumps(self.TEST_DISCOVERY)"},{"line_number":172,"context_line":"        disc_responses \u003d [httpretty.Response(body\u003ddisc_body, status\u003d200),"},{"line_number":173,"context_line":"                          httpretty.Response(body\u003d\u0027\u0027, status\u003d500)]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_d26a3619","line":170,"updated":"2014-06-11 21:17:30.000000000","message":"same comment here, the test is asserting that the response is cached in the plugin so the discovery url is only hit once.","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"30ab39ef8e7ebd1828ed6ba41c5c91a5339c618d","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            self.assertEqual(body, resp.text)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def test_discovery_uses_plugin_cache(self):"},{"line_number":170,"context_line":"        # if the discovery url is hit twice the second one will fail"},{"line_number":171,"context_line":"        disc_body \u003d jsonutils.dumps(self.TEST_DISCOVERY)"},{"line_number":172,"context_line":"        disc_responses \u003d [httpretty.Response(body\u003ddisc_body, status\u003d200),"},{"line_number":173,"context_line":"                          httpretty.Response(body\u003d\u0027\u0027, status\u003d500)]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_bbff3e33","line":170,"in_reply_to":"1ae5cdf2_d26a3619","updated":"2014-06-12 03:13:59.000000000","message":"Done","commit_id":"b10170d21248c823604904cf9565d4ec2907c6f5"}],"keystoneclient/tests/auth/test_identity_v2.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b54ddffc267f8b6c2a13451d704972549485e830","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                                               \u0027interface\u0027: \u0027admin\u0027,"},{"line_number":285,"context_line":"                                               \u0027version\u0027: \u0027v2\u0027})"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        self.assertEqual(resp.status_code, 200)"},{"line_number":288,"context_line":"        self.assertEqual(resp.text, \u0027SUCCESS\u0027)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        # if we don\u0027t specify a version, we use the URL from the SC"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_1126b316","line":287,"updated":"2014-05-22 17:58:33.000000000","message":"suggest change the order to expected, actual so we get nicer output if it fails. This applies to all the assertEquals.","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"6f377ff4e03d5f9bfa6af2abdc28a82b0e634cea","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                                               \u0027interface\u0027: \u0027admin\u0027,"},{"line_number":285,"context_line":"                                               \u0027version\u0027: \u0027v2\u0027})"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        self.assertEqual(resp.status_code, 200)"},{"line_number":288,"context_line":"        self.assertEqual(resp.text, \u0027SUCCESS\u0027)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        # if we don\u0027t specify a version, we use the URL from the SC"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_91dd5545","line":287,"in_reply_to":"7adec928_1126b316","updated":"2014-06-10 22:12:14.000000000","message":"Done","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b54ddffc267f8b6c2a13451d704972549485e830","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                                               \u0027version\u0027: \u0027v2\u0027})"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        self.assertEqual(resp.status_code, 200)"},{"line_number":288,"context_line":"        self.assertEqual(resp.text, \u0027SUCCESS\u0027)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        # if we don\u0027t specify a version, we use the URL from the SC"},{"line_number":291,"context_line":"        self.stub_url(httpretty.GET, [\u0027path\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_f186a7da","line":288,"updated":"2014-05-22 17:58:33.000000000","message":"I assume \u0027SUCCESS\u0027 here is supposed to be the same as the \u0027SUCCESS\u0027 at line 277. Make a variable so it\u0027s obvious that these are the same.","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"6f377ff4e03d5f9bfa6af2abdc28a82b0e634cea","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                                               \u0027version\u0027: \u0027v2\u0027})"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        self.assertEqual(resp.status_code, 200)"},{"line_number":288,"context_line":"        self.assertEqual(resp.text, \u0027SUCCESS\u0027)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        # if we don\u0027t specify a version, we use the URL from the SC"},{"line_number":291,"context_line":"        self.stub_url(httpretty.GET, [\u0027path\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_b1e091fb","line":288,"in_reply_to":"7adec928_f186a7da","updated":"2014-06-10 22:12:14.000000000","message":"Done","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b54ddffc267f8b6c2a13451d704972549485e830","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                                               \u0027interface\u0027: \u0027admin\u0027})"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        self.assertEqual(resp.status_code, 200)"},{"line_number":299,"context_line":"        self.assertEqual(resp.text, \u0027SC SUCCESS\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_51775b02","line":299,"updated":"2014-05-22 17:58:33.000000000","message":"I assume \u0027SC SUCCESS\u0027 here is supposed to be the same as the \u0027SC SUCCESS\u0027 at line 293. Make a variable so it\u0027s obvious that these are the same.","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"6f377ff4e03d5f9bfa6af2abdc28a82b0e634cea","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                                               \u0027interface\u0027: \u0027admin\u0027})"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        self.assertEqual(resp.status_code, 200)"},{"line_number":299,"context_line":"        self.assertEqual(resp.text, \u0027SC SUCCESS\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_d1e6fd15","line":299,"in_reply_to":"7adec928_51775b02","updated":"2014-06-10 22:12:14.000000000","message":"Done","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"}],"keystoneclient/tests/auth/test_identity_v3.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b54ddffc267f8b6c2a13451d704972549485e830","unresolved":false,"context_lines":[{"line_number":418,"context_line":"                          authenticated\u003dTrue)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    @httpretty.activate"},{"line_number":421,"context_line":"    def test_discovering(self):"},{"line_number":422,"context_line":"        # service catalog points to TEST_COMPUTE_ADMIN"},{"line_number":423,"context_line":"        self.stub_auth(json\u003dself.TEST_RESPONSE_DICT)"},{"line_number":424,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_f1d4e7be","line":421,"updated":"2014-05-22 17:58:33.000000000","message":"same comments apply here. Why do we have to copy-paste every test?","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"6f377ff4e03d5f9bfa6af2abdc28a82b0e634cea","unresolved":false,"context_lines":[{"line_number":418,"context_line":"                          authenticated\u003dTrue)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    @httpretty.activate"},{"line_number":421,"context_line":"    def test_discovering(self):"},{"line_number":422,"context_line":"        # service catalog points to TEST_COMPUTE_ADMIN"},{"line_number":423,"context_line":"        self.stub_auth(json\u003dself.TEST_RESPONSE_DICT)"},{"line_number":424,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_51baede1","line":421,"in_reply_to":"7adec928_f1d4e7be","updated":"2014-06-10 22:12:14.000000000","message":"Done","commit_id":"8f1ca1d2738ea0eddfadec74c7ae24943e7ee92e"}]}
