)]}'
{"openstack/auth/access.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"STALE_TOKEN_DURATION \u003d 30"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class AccessInfo(dict):"},{"line_number":29,"context_line":"    \"\"\"Encapsulates a raw authentication token from keystone."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    Provides helper methods for extracting useful values from that token."}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_64437642","line":28,"updated":"2014-05-06 04:28:37.000000000","message":"I\u0027d love to tear this apart, but i can\u0027t in keystoneclient. \n\nkill the factory, don\u0027t subclass dict, i don\u0027t know if i\u0027d construct the service catalog from here.","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def factory(cls, resp\u003dNone, body\u003dNone, region_name\u003dNone, **kwargs):"},{"line_number":37,"context_line":"        \"\"\"Create AccessInfo object given a successful auth response \u0026 body"},{"line_number":38,"context_line":"           or a user-provided dict."},{"line_number":39,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_078aac69","line":36,"updated":"2014-05-06 04:28:37.000000000","message":"region_name was a hack, don\u0027t bring it into here.","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":67,"context_line":"        super(AccessInfo, self).__init__(*args, **kwargs)"},{"line_number":68,"context_line":"        self.service_catalog \u003d service_catalog.ServiceCatalog.factory("},{"line_number":69,"context_line":"            resource_dict\u003dself, region_name\u003dself._region_name)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @property"},{"line_number":72,"context_line":"    def _region_name(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_a7b74039","line":69,"updated":"2014-05-06 04:28:37.000000000","message":"service catalog is overriden in both subclasses","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"ff4bdbd3aa6e427eb6b7b80fbd94c75dc3afa196","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        :return: boolean : true if expiration is within the given duration"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        \"\"\""},{"line_number":81,"context_line":"        stale_duration \u003d (STALE_TOKEN_DURATION if stale_duration is None"},{"line_number":82,"context_line":"                          else stale_duration)"},{"line_number":83,"context_line":"        norm_expires \u003d timeutils.normalize_time(self.expires)"},{"line_number":84,"context_line":"        # (gyee) should we move auth_token.will_expire_soon() to timeutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_0bb9c914","line":81,"updated":"2014-05-06 15:09:27.000000000","message":"This is probably more clear to just be...\n\nif stale_duration is None:\n    stale_duration \u003d STALE_TOKEN_DURATION\n\n(seems weird to keep as a one-liner that is actually two lines with long names)","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":330,"context_line":"        super(AccessInfo, self).__init__(*args, **kwargs)"},{"line_number":331,"context_line":"        self.update(version\u003d\u0027v2.0\u0027)"},{"line_number":332,"context_line":"        self.service_catalog \u003d service_catalog.ServiceCatalog.factory("},{"line_number":333,"context_line":"            resource_dict\u003dself,"},{"line_number":334,"context_line":"            token\u003dself[\u0027token\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_4472f2ad","line":331,"updated":"2014-05-06 04:28:37.000000000","message":"don\u0027t specify version here","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":329,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":330,"context_line":"        super(AccessInfo, self).__init__(*args, **kwargs)"},{"line_number":331,"context_line":"        self.update(version\u003d\u0027v2.0\u0027)"},{"line_number":332,"context_line":"        self.service_catalog \u003d service_catalog.ServiceCatalog.factory("},{"line_number":333,"context_line":"            resource_dict\u003dself,"},{"line_number":334,"context_line":"            token\u003dself[\u0027token\u0027][\u0027id\u0027],"},{"line_number":335,"context_line":"            region_name\u003dself._region_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_c7b44437","line":332,"updated":"2014-05-06 04:28:37.000000000","message":"shouldn\u0027t need factory, it\u0027s V2","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    @property"},{"line_number":462,"context_line":"    def auth_url(self):"},{"line_number":463,"context_line":"        # FIXME(jamielennox): this is deprecated in favour of retrieving it"},{"line_number":464,"context_line":"        # from the service catalog. Provide a warning."},{"line_number":465,"context_line":"        if self.service_catalog:"},{"line_number":466,"context_line":"            return self.service_catalog.get_urls(service_type\u003d\u0027identity\u0027,"},{"line_number":467,"context_line":"                                                 endpoint_type\u003d\u0027publicURL\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_e476a6a3","line":464,"updated":"2014-05-06 04:28:37.000000000","message":"remove this property","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":470,"context_line":"            return None"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    @property"},{"line_number":473,"context_line":"    def management_url(self):"},{"line_number":474,"context_line":"        # FIXME(jamielennox): this is deprecated in favour of retrieving it"},{"line_number":475,"context_line":"        # from the service catalog. Provide a warning."},{"line_number":476,"context_line":"        if self.service_catalog:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_047c6a82","line":473,"updated":"2014-05-06 04:28:37.000000000","message":"remove this property","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":489,"context_line":"    def __init__(self, token, *args, **kwargs):"},{"line_number":490,"context_line":"        super(AccessInfo, self).__init__(*args, **kwargs)"},{"line_number":491,"context_line":"        self.update(version\u003d\u0027v3\u0027)"},{"line_number":492,"context_line":"        self.service_catalog \u003d service_catalog.ServiceCatalog.factory("},{"line_number":493,"context_line":"            resource_dict\u003dself,"},{"line_number":494,"context_line":"            token\u003dtoken,"},{"line_number":495,"context_line":"            region_name\u003dself._region_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_e784e85f","line":492,"updated":"2014-05-06 04:28:37.000000000","message":"shouldn\u0027t need factory, it\u0027s v3","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":594,"context_line":""},{"line_number":595,"context_line":"    @property"},{"line_number":596,"context_line":"    def auth_url(self):"},{"line_number":597,"context_line":"        # FIXME(jamielennox): this is deprecated in favour of retrieving it"},{"line_number":598,"context_line":"        # from the service catalog. Provide a warning."},{"line_number":599,"context_line":"        if self.service_catalog:"},{"line_number":600,"context_line":"            return self.service_catalog.get_urls(service_type\u003d\u0027identity\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_a449fe61","line":597,"updated":"2014-05-06 04:28:37.000000000","message":"remove this property","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    @property"},{"line_number":607,"context_line":"    def management_url(self):"},{"line_number":608,"context_line":"        # FIXME(jamielennox): this is deprecated in favour of retrieving it"},{"line_number":609,"context_line":"        # from the service catalog. Provide a warning."},{"line_number":610,"context_line":"        if self.service_catalog:"},{"line_number":611,"context_line":"            return self.service_catalog.get_urls(service_type\u003d\u0027identity\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_84407a35","line":608,"updated":"2014-05-06 04:28:37.000000000","message":"remove this property","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"}],"openstack/auth/identity/base.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.auth_ref \u003d None"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        # NOTE(jamielennox): DEPRECATED. The following should not really be set"},{"line_number":41,"context_line":"        # here but handled by the individual auth plugin."},{"line_number":42,"context_line":"        self.username \u003d username"},{"line_number":43,"context_line":"        self.password \u003d password"},{"line_number":44,"context_line":"        self.token \u003d token"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_47803446","line":41,"updated":"2014-05-06 04:28:37.000000000","message":"remove the parameters below and from args","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"}],"openstack/auth/identity/v2.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"class Auth(base.BaseIdentityPlugin):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @staticmethod"},{"line_number":28,"context_line":"    def _factory(auth_url, **kwargs):"},{"line_number":29,"context_line":"        \"\"\"Construct a plugin appropriate to your available arguments."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        This function should only be used for loading authentication from a"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_a78e6077","line":28,"updated":"2014-05-06 04:28:37.000000000","message":"remove this. You shouldn\u0027t need it.","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"03c85410c68e60c6a2226d3ced2fd9c8928439c8","unresolved":false,"context_lines":[{"line_number":25,"context_line":"class Auth(base.BaseIdentityPlugin):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @staticmethod"},{"line_number":28,"context_line":"    def _factory(auth_url, **kwargs):"},{"line_number":29,"context_line":"        \"\"\"Construct a plugin appropriate to your available arguments."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        This function should only be used for loading authentication from a"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_250370b9","line":28,"updated":"2014-05-22 15:01:34.000000000","message":"openstack.auth.access.AccessInfo has a public factory method, and this one and the v3.Auth have private factory methods. I\u0027m not ready to argue against their removal so much as Jamie did in patchset1, but just want to understand how all of these should be used. \n\nThe comment about loading from a config file - is that something a person building a product on top of OpenStack would do, or something this SDK would do?","commit_id":"dfa490106117ed3c2a8bca2d78048d096d936b80"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"e1a56a89fb98eb5543cc714608100d977972e7db","unresolved":false,"context_lines":[{"line_number":25,"context_line":"class Auth(base.BaseIdentityPlugin):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @staticmethod"},{"line_number":28,"context_line":"    def _factory(auth_url, **kwargs):"},{"line_number":29,"context_line":"        \"\"\"Construct a plugin appropriate to your available arguments."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        This function should only be used for loading authentication from a"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_1084f4af","line":28,"in_reply_to":"7adec928_250370b9","updated":"2014-05-27 20:31:16.000000000","message":"19:06:54 \u003cjamielennox\u003e regarding the _factory for plugins, the reason i made it private in keystoneclient and advocate for it\u0027s removal here is that we should expect that there are going to be way more plugins and that loading them manually from a factory like that won\u0027t work\n19:07:24 \u003cjamielennox\u003e you should never be in the position that you have a bunch of arguments and you need to figure out which plugin to use - the plugin should always be explicit","commit_id":"dfa490106117ed3c2a8bca2d78048d096d936b80"}],"openstack/auth/identity/v3.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                                   **resp_data)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    @staticmethod"},{"line_number":118,"context_line":"    def _factory(auth_url, **kwargs):"},{"line_number":119,"context_line":"        \"\"\"Construct a plugin appropriate to your available arguments."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        This function is intended as a convenience and backwards compatibility."}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_e7eb0811","line":118,"updated":"2014-05-06 04:28:37.000000000","message":"remove this, you shouldn\u0027t need it.","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"03c85410c68e60c6a2226d3ced2fd9c8928439c8","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        if not methods:"},{"line_number":139,"context_line":"            msg \u003d \u0027A username and password or token is required.\u0027"},{"line_number":140,"context_line":"            raise exceptions.AuthorizationFailure(msg)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        return Auth(auth_url, methods, **kwargs)"},{"line_number":143,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_0577543c","line":140,"updated":"2014-05-22 15:01:34.000000000","message":"v2.Auth._factory raises NoMatchingPlugin in this case. Should these be consistent one way or another?","commit_id":"dfa490106117ed3c2a8bca2d78048d096d936b80"}],"openstack/auth/service_catalog.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\"Helper methods for dealing with a Keystone Service Catalog.\"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @classmethod"},{"line_number":31,"context_line":"    def factory(cls, resource_dict, token\u003dNone, region_name\u003dNone):"},{"line_number":32,"context_line":"        \"\"\"Create ServiceCatalog object given a auth token.\"\"\""},{"line_number":33,"context_line":"        if ServiceCatalogV3.is_valid(resource_dict):"},{"line_number":34,"context_line":"            return ServiceCatalogV3(token, resource_dict, region_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_47f754f5","line":31,"updated":"2014-05-06 04:28:37.000000000","message":"remove factory","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"ff4bdbd3aa6e427eb6b7b80fbd94c75dc3afa196","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self._region_name \u003d region_name"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @property"},{"line_number":44,"context_line":"    def region_name(self):"},{"line_number":45,"context_line":"        # FIXME(jamielennox): Having region_name set on the service catalog"},{"line_number":46,"context_line":"        # directly is deprecated. It should instead be provided as a parameter"},{"line_number":47,"context_line":"        # to calls made to the service_catalog. Provide appropriate warning."}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_4f483e87","line":44,"updated":"2014-05-06 15:09:27.000000000","message":"Should probably remove this one as well?","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"ff4bdbd3aa6e427eb6b7b80fbd94c75dc3afa196","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        if region_name:"},{"line_number":226,"context_line":"            msg +\u003d \u0027 in %s region\u0027 % region_name"},{"line_number":227,"context_line":"        msg +\u003d \u0027 not found\u0027"},{"line_number":228,"context_line":"        raise exceptions.EndpointNotFound(msg)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    @abc.abstractmethod"},{"line_number":231,"context_line":"    def get_data(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_0ee2b72e","line":228,"updated":"2014-05-06 15:09:27.000000000","message":"With how many variables are going into this exception string, it stuck out to me. Are any of them useful as attributes on the exception object? If not, ignore me :)","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"e62d09621a6e75c86a879166e4af1addc9143385","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        if region_name:"},{"line_number":226,"context_line":"            msg +\u003d \u0027 in %s region\u0027 % region_name"},{"line_number":227,"context_line":"        msg +\u003d \u0027 not found\u0027"},{"line_number":228,"context_line":"        raise exceptions.EndpointNotFound(msg)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    @abc.abstractmethod"},{"line_number":231,"context_line":"    def get_data(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_8a8c5337","line":228,"in_reply_to":"9ad9bd40_0ee2b72e","updated":"2014-05-09 19:30:48.000000000","message":"The only thing that comes to mind to simplify this would be make some endpoint filter class or something which I don\u0027t think people would like.","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    from Keystone."},{"line_number":245,"context_line":"    \"\"\""},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def __init__(self, resource_dict, region_name\u003dNone):"},{"line_number":248,"context_line":"        self.catalog \u003d resource_dict"},{"line_number":249,"context_line":"        super(ServiceCatalogV2, self).__init__(region_name\u003dregion_name)"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_67dff869","line":247,"updated":"2014-05-06 04:28:37.000000000","message":"region_name shouldn\u0027t belong here. \n\nThe resource_dict that is passed really is really the whole token - there\u0027s no reason for that and makes it difficult to construct new service catalogs when all you have is that catalog data.","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"03c85410c68e60c6a2226d3ced2fd9c8928439c8","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        \"\"\""},{"line_number":67,"context_line":"        urls \u003d self.get_urls(service)"},{"line_number":68,"context_line":"        if len(urls) \u003c 1:"},{"line_number":69,"context_line":"            message \u003d \"Endpoint not found for %s\" % str(service)"},{"line_number":70,"context_line":"            raise exceptions.EndpointNotFound(message)"},{"line_number":71,"context_line":"        return urls[0]"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_305570c6","line":69,"updated":"2014-05-22 15:01:34.000000000","message":"Should the str be six.text_type?","commit_id":"dfa490106117ed3c2a8bca2d78048d096d936b80"}],"openstack/auth/token_endpoint.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self.token \u003d token"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def get_token(self, session):"},{"line_number":31,"context_line":"        return self.token"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_07d8ec79","line":31,"updated":"2014-05-06 04:28:37.000000000","message":"this should have get_endpoint as well. https://review.openstack.org/#/c/91216/","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"}],"openstack/tests/auth/identity/test_v2.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4ebfc9b339f994bc91489a532e97f9eba481d1c4","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        response.json.return_value \u003d xresp"},{"line_number":134,"context_line":"        transport.post.return_value \u003d response"},{"line_number":135,"context_line":"        return transport"},{"line_number":136,"context_line":" "},{"line_number":137,"context_line":"    def test_get_auth_tenant_id(self):"},{"line_number":138,"context_line":"        kargs \u003d {\u0027token\u0027: TEST_TOKEN,"},{"line_number":139,"context_line":"                 \u0027trust_id\u0027: TEST_TRUST_ID, \u0027tenant_id\u0027: TEST_TENANT_ID,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_47ce74b5","line":136,"updated":"2014-05-06 04:28:37.000000000","message":"whitespaces.","commit_id":"0592c20695e05222841086ef64ad34cb74162d05"}],"openstack/tests/auth/test_service_catalog.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"312aa62a0e47a5e5d077310ed6bf20457f23e49e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                          \u0027user_id\u0027: common.TEST_USER_ID}"},{"line_number":51,"context_line":"        self.assertEqual(expected_token, sot.get_token())"},{"line_number":52,"context_line":"        self.assertEqual(common.TEST_SERVICE_CATALOG_V3, sot.get_data())"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_factory_raises(self):"},{"line_number":55,"context_line":"        self.assertRaises(NotImplementedError,"},{"line_number":56,"context_line":"                          catalog.ServiceCatalog.factory, {})"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_ca13bb0b","line":53,"updated":"2014-05-09 19:28:31.000000000","message":"Need better tests for the various get urls methods","commit_id":"99ed4d3460e2e6da7da65a14db7ebb52b4020b1f"}]}
