)]}'
{"keystone/auth/token_factory.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b30ec3a9ab776cfee0994a23f3014570a3a856c5","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            expires \u003d token_module.default_expire_time()"},{"line_number":132,"context_line":"        if not isinstance(expires, unicode):"},{"line_number":133,"context_line":"            expires \u003d timeutils.isotime(expires)"},{"line_number":134,"context_line":"        token_data[\u0027expires\u0027] \u003d expires"},{"line_number":135,"context_line":"        token_data[\u0027issued_at\u0027] \u003d timeutils.strtime()"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def get_token_data(self, user_id, method_names, extras,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAANH%2F%2F9Sk%3D","line":134,"updated":"2013-03-01 16:02:55.000000000","message":"expires_at","commit_id":"d44f677b7b413750e809924af3543624988a7da6"},{"author":{"_account_id":4992,"name":"malini-k-bhandaru","email":"malini.k.bhandaru@intel.com","username":"malini-k-bhandaru"},"change_message_id":"274ea1992b910f12e6ba11087b198cb503e5fb82","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            expires \u003d token_module.default_expire_time()"},{"line_number":132,"context_line":"        if not isinstance(expires, unicode):"},{"line_number":133,"context_line":"            expires \u003d timeutils.isotime(expires)"},{"line_number":134,"context_line":"        token_data[\u0027expires\u0027] \u003d expires"},{"line_number":135,"context_line":"        token_data[\u0027issued_at\u0027] \u003d timeutils.strtime()"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def get_token_data(self, user_id, method_names, extras,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAANH%2F%2F83o%3D","line":134,"in_reply_to":"AAAANH%2F%2F9Sk%3D","updated":"2013-03-01 19:59:01.000000000","message":"No, keeping as \"expires\", internally everywhere \"expires\", only outward facing made into \"expires_at\". Read earlier comment of keeping this change minimal, versus going all the way up till the database.","commit_id":"d44f677b7b413750e809924af3543624988a7da6"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b30ec3a9ab776cfee0994a23f3014570a3a856c5","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            \u0027  Allowed values are PKI or UUID.\u0027 %"},{"line_number":209,"context_line":"            CONF.signing.token_format)"},{"line_number":210,"context_line":"    token_api \u003d token_module.Manager()"},{"line_number":211,"context_line":"    try:"},{"line_number":212,"context_line":"        expiry \u003d token_data[\u0027token\u0027][\u0027expires\u0027]"},{"line_number":213,"context_line":"        if isinstance(expiry, basestring):"},{"line_number":214,"context_line":"            expiry \u003d timeutils.parse_isotime(expiry)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAANH%2F%2F9SM%3D","line":211,"updated":"2013-03-01 16:02:55.000000000","message":"expiry \u003d token_data[\u0027token\u0027][\u0027expires\u0027] if \u0027expires\u0027 in token_data[\u0027token] else token_data[\u0027token\u0027][\u0027expires_at\u0027]","commit_id":"d44f677b7b413750e809924af3543624988a7da6"},{"author":{"_account_id":4992,"name":"malini-k-bhandaru","email":"malini.k.bhandaru@intel.com","username":"malini-k-bhandaru"},"change_message_id":"274ea1992b910f12e6ba11087b198cb503e5fb82","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            \u0027  Allowed values are PKI or UUID.\u0027 %"},{"line_number":209,"context_line":"            CONF.signing.token_format)"},{"line_number":210,"context_line":"    token_api \u003d token_module.Manager()"},{"line_number":211,"context_line":"    try:"},{"line_number":212,"context_line":"        expiry \u003d token_data[\u0027token\u0027][\u0027expires\u0027]"},{"line_number":213,"context_line":"        if isinstance(expiry, basestring):"},{"line_number":214,"context_line":"            expiry \u003d timeutils.parse_isotime(expiry)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAANH%2F%2F8zg%3D","line":211,"in_reply_to":"AAAANH%2F%2F9SM%3D","updated":"2013-03-01 19:59:01.000000000","message":"This is not necessary if we preserve the \"expires\" in previous comment of yours.","commit_id":"d44f677b7b413750e809924af3543624988a7da6"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b30ec3a9ab776cfee0994a23f3014570a3a856c5","unresolved":false,"context_lines":[{"line_number":250,"context_line":"    status \u003d (200, \u0027OK\u0027)"},{"line_number":251,"context_line":"    # Minimally meet V3 API spec"},{"line_number":252,"context_line":"    # convert \u0027expires\u0027 to \u0027expires_at\u0027"},{"line_number":253,"context_line":"    if \"token\" in token_data:"},{"line_number":254,"context_line":"        if \"expires\" in token_data[\"token\"]:"},{"line_number":255,"context_line":"            token_data[\"token\"][\u0027expires_at\u0027] \u003d token_data[\"token\"][\"expires\"]"},{"line_number":256,"context_line":"            del token_data[\"token\"][\"expires\"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAANH%2F%2F9Sc%3D","line":253,"updated":"2013-03-01 16:02:55.000000000","message":"Translation is not needed as this function is used by v3 only.","commit_id":"d44f677b7b413750e809924af3543624988a7da6"},{"author":{"_account_id":4992,"name":"malini-k-bhandaru","email":"malini.k.bhandaru@intel.com","username":"malini-k-bhandaru"},"change_message_id":"274ea1992b910f12e6ba11087b198cb503e5fb82","unresolved":false,"context_lines":[{"line_number":250,"context_line":"    status \u003d (200, \u0027OK\u0027)"},{"line_number":251,"context_line":"    # Minimally meet V3 API spec"},{"line_number":252,"context_line":"    # convert \u0027expires\u0027 to \u0027expires_at\u0027"},{"line_number":253,"context_line":"    if \"token\" in token_data:"},{"line_number":254,"context_line":"        if \"expires\" in token_data[\"token\"]:"},{"line_number":255,"context_line":"            token_data[\"token\"][\u0027expires_at\u0027] \u003d token_data[\"token\"][\"expires\"]"},{"line_number":256,"context_line":"            del token_data[\"token\"][\"expires\"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAANH%2F%2F8zI%3D","line":253,"in_reply_to":"AAAANH%2F%2F9Sc%3D","updated":"2013-03-01 19:59:01.000000000","message":"Agree. Will remove. Thanks!\n(It stemmed from when I first started working on this fix to merging with head that contained the fix for the XML issue having more than one root element).","commit_id":"d44f677b7b413750e809924af3543624988a7da6"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"0d175f2bf270ee3189ca96f1d967d08b06674813","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            expires \u003d token_module.default_expire_time()"},{"line_number":132,"context_line":"        if not isinstance(expires, unicode):"},{"line_number":133,"context_line":"            expires \u003d timeutils.isotime(expires)"},{"line_number":134,"context_line":"        token_data[\u0027expires\u0027] \u003d expires"},{"line_number":135,"context_line":"        token_data[\u0027issued_at\u0027] \u003d timeutils.strtime()"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def get_token_data(self, user_id, method_names, extras,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAANH%2F%2F8wQ%3D","line":134,"updated":"2013-03-01 20:35:17.000000000","message":"this needs to be \u0027expires_at\u0027, doing so won\u0027t validate schema as token_data is storied at a blob in the backend.","commit_id":"e2b84aac19dde015f45f0f81361bcbe450529336"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"0d175f2bf270ee3189ca96f1d967d08b06674813","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    # Minimally meet V3 API spec"},{"line_number":252,"context_line":"    # convert \u0027expires\u0027 to \u0027expires_at\u0027"},{"line_number":253,"context_line":"    token_data[\"token\"][\u0027expires_at\u0027] \u003d token_data[\"token\"][\"expires\"]"},{"line_number":254,"context_line":"    del token_data[\"token\"][\"expires\"]"},{"line_number":255,"context_line":"    body \u003d jsonutils.dumps(token_data, cls\u003dutils.SmarterEncoder)"},{"line_number":256,"context_line":"    return webob.Response(body\u003dbody,"},{"line_number":257,"context_line":"                          status\u003d\u0027%s %s\u0027 % status,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAANH%2F%2F8wc%3D","line":254,"updated":"2013-03-01 20:35:17.000000000","message":"Please remove this check and change token_data[\u0027token\u0027][\u0027expires_at\u0027] instead. token_data is stored as a blob in the tokens table so it does not constitute a schema change. If we are going to change it, change it all the way. Doing it halfway only adds confusion.","commit_id":"e2b84aac19dde015f45f0f81361bcbe450529336"}],"tests/test_content_types.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ca604a84e09ef7e4ba369791bba4ad35b6e16bd7","unresolved":false,"context_lines":[{"line_number":570,"context_line":"        # validate token"},{"line_number":571,"context_line":"        self.assertIsNotNone(r.body[\u0027access\u0027][\u0027token\u0027].get(\u0027id\u0027))"},{"line_number":572,"context_line":"        self.assertIsNotNone(r.body[\u0027access\u0027][\u0027token\u0027].get(\u0027expires_at\u0027,"},{"line_number":573,"context_line":"                             r.body[\u0027access\u0027][\u0027token\u0027].get(\u0027expires\u0027)))"},{"line_number":574,"context_line":"        tenant \u003d r.body[\u0027access\u0027][\u0027token\u0027].get(\u0027tenant\u0027)"},{"line_number":575,"context_line":"        if tenant is not None:"},{"line_number":576,"context_line":"            # validate tenant"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2F4jg%3D","line":573,"updated":"2013-03-07 17:50:12.000000000","message":"-1; this assertion needs to remain as \u0027expires\u0027 only. if anything, there should be an assertIsNone for \u0027expires_at\u0027 here","commit_id":"001bd55022049d96f9ed65d06b5359c91e029ffe"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ca604a84e09ef7e4ba369791bba4ad35b6e16bd7","unresolved":false,"context_lines":[{"line_number":835,"context_line":"        token \u003d xml.find(self._tag(\u0027token\u0027))"},{"line_number":836,"context_line":"        self.assertIsNotNone(token)"},{"line_number":837,"context_line":"        self.assertIsNotNone(token.get(\u0027id\u0027))"},{"line_number":838,"context_line":"        self.assertIsNotNone(token.get(\u0027expires_at\u0027, token.get(\u0027expires\u0027)))"},{"line_number":839,"context_line":"        tenant \u003d token.find(self._tag(\u0027tenant\u0027))"},{"line_number":840,"context_line":"        if tenant is not None:"},{"line_number":841,"context_line":"            # validate tenant"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2F4jc%3D","line":838,"updated":"2013-03-07 17:50:12.000000000","message":"undo","commit_id":"001bd55022049d96f9ed65d06b5359c91e029ffe"}],"tests/test_v3_auth.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ca604a84e09ef7e4ba369791bba4ad35b6e16bd7","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import uuid"},{"line_number":16,"context_line":"import json"},{"line_number":17,"context_line":"import nose.exc"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from keystone.common import cms"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2F4jY%3D","line":16,"updated":"2013-03-07 17:50:12.000000000","message":"import order","commit_id":"001bd55022049d96f9ed65d06b5359c91e029ffe"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ca604a84e09ef7e4ba369791bba4ad35b6e16bd7","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import json"},{"line_number":17,"context_line":"import nose.exc"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from keystone.common import cms"},{"line_number":20,"context_line":"from keystone import auth"},{"line_number":21,"context_line":"from keystone import config"},{"line_number":22,"context_line":"from keystone import exception"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2F4jU%3D","line":19,"updated":"2013-03-07 17:50:12.000000000","message":"import order; see HACKING","commit_id":"001bd55022049d96f9ed65d06b5359c91e029ffe"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ca604a84e09ef7e4ba369791bba4ad35b6e16bd7","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            user_id\u003dself.user[\u0027id\u0027],"},{"line_number":499,"context_line":"            password\u003dself.user[\u0027password\u0027])"},{"line_number":500,"context_line":"        r \u003d self.post(\u0027/auth/tokens\u0027, body\u003dauth_data)"},{"line_number":501,"context_line":"        self.assertValidUnscopedTokenResponse(r)"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"        token \u003d r.getheader(\u0027X-Subject-Token\u0027)"},{"line_number":504,"context_line":"        # test token auth"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2F4jE%3D","line":501,"updated":"2013-03-07 17:50:12.000000000","message":"this will actually return the token, so 503 is unnecessary as well\n\n  token \u003d self.assertValidUnscopedTokenResponse(r)","commit_id":"001bd55022049d96f9ed65d06b5359c91e029ffe"}]}
