)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"2501dca8f58e683508e8e701c712682666a0aa06","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"I think I\u0027ve looked at every log statement in this repo and I\u0027ve either"},{"line_number":10,"context_line":"removed the tokens from the log strings or made them print out"},{"line_number":11,"context_line":"\"\u003cSANITIZED\u003e\" instead."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I1efbc834fcab951f6797b56afb5c5519cc70d28c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAVn%2F%2FsHI%3D","line":11,"updated":"2014-03-04 17:00:37.000000000","message":"please insert bug reference here","commit_id":"111d41994b464556336421c17e03c9e1fe1cb7ea"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"27e6057cda9747d905d23669de42b3ca1d3b761d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"removed the tokens from the log strings or made them print out"},{"line_number":11,"context_line":"\"\u003cSANITIZED\u003e\" instead."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://bugs.launchpad.net/keystone/+bug/1287938"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I1efbc834fcab951f6797b56afb5c5519cc70d28c"},{"line_number":16,"context_line":"Closes-Bug: 1287938"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAVn%2F%2FblA%3D","line":13,"updated":"2014-03-06 04:48:28.000000000","message":"You don\u0027t need this, it\u0027s implied by the Closes-Bug below.","commit_id":"8b4522dfecf78718c3dee3e5db3acc13601e12eb"}],"keystoneclient/middleware/auth_token.py":[{"author":{"_account_id":8180,"name":"Joel Friedly","email":"joelfriedly@gmail.com","username":"jfriedly"},"change_message_id":"79e05475ee8cd4ce8ea8a222ccc2e2d88d86d179","unresolved":false,"context_lines":[{"line_number":567,"context_line":"                    versions.append(version[\u0027id\u0027])"},{"line_number":568,"context_line":"            except KeyError:"},{"line_number":569,"context_line":"                self.LOG.error("},{"line_number":570,"context_line":"                    \u0027Invalid version response format from server\u0027)"},{"line_number":571,"context_line":"                raise ServiceError(\u0027Unable to parse version response \u0027"},{"line_number":572,"context_line":"                                   \u0027from keystone\u0027)"},{"line_number":573,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2B5Fo%3D","line":570,"updated":"2014-02-18 11:27:03.000000000","message":"I think this was an actual bug.  Does ``LOG.error`` accept ``*kwargs``?","commit_id":"8e38ff8824d9db97f0a4835796e6e7baba17d913"},{"author":{"_account_id":8180,"name":"Joel Friedly","email":"joelfriedly@gmail.com","username":"jfriedly"},"change_message_id":"106efc91a352014c9dcc9e4552bfdf575d1fcc70","unresolved":false,"context_lines":[{"line_number":567,"context_line":"                    versions.append(version[\u0027id\u0027])"},{"line_number":568,"context_line":"            except KeyError:"},{"line_number":569,"context_line":"                self.LOG.error("},{"line_number":570,"context_line":"                    \u0027Invalid version response format from server\u0027)"},{"line_number":571,"context_line":"                raise ServiceError(\u0027Unable to parse version response \u0027"},{"line_number":572,"context_line":"                                   \u0027from keystone\u0027)"},{"line_number":573,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2B5EQ%3D","line":570,"in_reply_to":"AAAAUX%2F%2B5Fo%3D","updated":"2014-02-18 11:28:07.000000000","message":"Oops, I mean ``*args``","commit_id":"8e38ff8824d9db97f0a4835796e6e7baba17d913"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"602f8110898cb024862b0b01b415621005b92760","unresolved":false,"context_lines":[{"line_number":843,"context_line":"            return data"},{"line_number":844,"context_line":"        except NetworkError:"},{"line_number":845,"context_line":"            self.LOG.debug(\u0027Token validation failure.\u0027, exc_info\u003dTrue)"},{"line_number":846,"context_line":"            self.LOG.warn(\"Authorization failed for token \u003cSANITIZED\u003e\")"},{"line_number":847,"context_line":"            raise InvalidUserToken(\u0027Token authorization failed\u0027)"},{"line_number":848,"context_line":"        except Exception:"},{"line_number":849,"context_line":"            self.LOG.debug(\u0027Token validation failure.\u0027, exc_info\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2ByHU%3D","line":846,"updated":"2014-02-19 03:54:52.000000000","message":"you\u0027re not actually sanitizing anything, just remove the %s instead?","commit_id":"8e38ff8824d9db97f0a4835796e6e7baba17d913"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"602f8110898cb024862b0b01b415621005b92760","unresolved":false,"context_lines":[{"line_number":1031,"context_line":"                serialized \u003d serialized.decode(\u0027utf-8\u0027)"},{"line_number":1032,"context_line":"            cached \u003d jsonutils.loads(serialized)"},{"line_number":1033,"context_line":"            if cached \u003d\u003d \u0027invalid\u0027:"},{"line_number":1034,"context_line":"                self.LOG.debug(\u0027Cached Token \u003cSANITIZED\u003e is marked \u0027"},{"line_number":1035,"context_line":"                               \u0027unauthorized\u0027)"},{"line_number":1036,"context_line":"                raise InvalidUserToken(\u0027Token authorization failed\u0027)"},{"line_number":1037,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2ByG0%3D","line":1034,"updated":"2014-02-19 03:54:52.000000000","message":"same","commit_id":"8e38ff8824d9db97f0a4835796e6e7baba17d913"},{"author":{"_account_id":8180,"name":"Joel Friedly","email":"joelfriedly@gmail.com","username":"jfriedly"},"change_message_id":"6ff21ed3f9335af77620dc77efddf974ca534432","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"            self.LOG.warn(\"Authorization failed for token \u003cSANITIZED\u003e\")"},{"line_number":1214,"context_line":"            raise InvalidUserToken(\u0027Token authorization failed\u0027)"},{"line_number":1215,"context_line":"        if response.status_code \u003d\u003d 401:"},{"line_number":1216,"context_line":"            headers[\u0027X-Auth-Token\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027"},{"line_number":1217,"context_line":"            self.LOG.info("},{"line_number":1218,"context_line":"                \u0027Keystone rejected admin token %s, resetting\u0027, headers)"},{"line_number":1219,"context_line":"            self.admin_token \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BzuM%3D","line":1216,"updated":"2014-02-18 21:59:51.000000000","message":"This shouldn\u0027t have any side-effects.  ``headers`` is a local variable only and it isn\u0027t used after this point except for the log statement.","commit_id":"8e38ff8824d9db97f0a4835796e6e7baba17d913"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c917dae9fe9f33e56d308851c686b0a968430fb7","unresolved":false,"context_lines":[{"line_number":567,"context_line":"                    versions.append(version[\u0027id\u0027])"},{"line_number":568,"context_line":"            except KeyError:"},{"line_number":569,"context_line":"                self.LOG.error("},{"line_number":570,"context_line":"                    \u0027Invalid version response format from server\u0027)"},{"line_number":571,"context_line":"                raise ServiceError(\u0027Unable to parse version response \u0027"},{"line_number":572,"context_line":"                                   \u0027from keystone\u0027)"},{"line_number":573,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVX%2F%2F%2B18%3D","line":570,"updated":"2014-02-27 01:33:31.000000000","message":"nice catch!","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c917dae9fe9f33e56d308851c686b0a968430fb7","unresolved":false,"context_lines":[{"line_number":810,"context_line":"                \"Unexpected response from keystone service: %s\", data)"},{"line_number":811,"context_line":"            raise ServiceError(\u0027invalid json response\u0027)"},{"line_number":812,"context_line":"        except (ValueError):"},{"line_number":813,"context_line":"            data[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027"},{"line_number":814,"context_line":"            self.LOG.warn("},{"line_number":815,"context_line":"                \"Unable to parse expiration time from token: %s\", data)"},{"line_number":816,"context_line":"            raise ServiceError(\u0027invalid json response\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVX%2F%2F%2B0s%3D","line":813,"updated":"2014-02-27 01:33:31.000000000","message":"ValueError means data is likely bogus, not actual token data. So\n\ndata[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027]\n\nmay just throw you another ValueError. So try this\n\nif (\u0027access\u0027 in data and\n        \u0027token\u0027 in data[\u0027access\u0027] and \u0027id\u0027 in data[\u0027access\u0027][\u0027token\u0027]):\n    data[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027\n\nor this\n\ntry:\n    data[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027\nexcept:\n    pass","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":8180,"name":"Joel Friedly","email":"joelfriedly@gmail.com","username":"jfriedly"},"change_message_id":"293ea1f0c9a4b8bf927de9893cf1a25cdd0e757d","unresolved":false,"context_lines":[{"line_number":810,"context_line":"                \"Unexpected response from keystone service: %s\", data)"},{"line_number":811,"context_line":"            raise ServiceError(\u0027invalid json response\u0027)"},{"line_number":812,"context_line":"        except (ValueError):"},{"line_number":813,"context_line":"            data[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027"},{"line_number":814,"context_line":"            self.LOG.warn("},{"line_number":815,"context_line":"                \"Unable to parse expiration time from token: %s\", data)"},{"line_number":816,"context_line":"            raise ServiceError(\u0027invalid json response\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVX%2F%2F%2BQA%3D","line":813,"in_reply_to":"AAAAVX%2F%2F%2B0s%3D","updated":"2014-02-27 03:27:05.000000000","message":"Good catch.","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c917dae9fe9f33e56d308851c686b0a968430fb7","unresolved":false,"context_lines":[{"line_number":1031,"context_line":"                serialized \u003d serialized.decode(\u0027utf-8\u0027)"},{"line_number":1032,"context_line":"            cached \u003d jsonutils.loads(serialized)"},{"line_number":1033,"context_line":"            if cached \u003d\u003d \u0027invalid\u0027:"},{"line_number":1034,"context_line":"                self.LOG.debug(\u0027Cached Token is marked unauthorized\u0027)"},{"line_number":1035,"context_line":"                raise InvalidUserToken(\u0027Token authorization failed\u0027)"},{"line_number":1036,"context_line":""},{"line_number":1037,"context_line":"            data, expires \u003d cached"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVX%2F%2F%2By8%3D","line":1034,"updated":"2014-02-27 01:33:31.000000000","message":"Its debatable. But I think it OK to log token in the debug statement as debug logs are visible to dev or support person. Those are the ones that are authorized to see the token anyway.","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":8180,"name":"Joel Friedly","email":"joelfriedly@gmail.com","username":"jfriedly"},"change_message_id":"293ea1f0c9a4b8bf927de9893cf1a25cdd0e757d","unresolved":false,"context_lines":[{"line_number":1031,"context_line":"                serialized \u003d serialized.decode(\u0027utf-8\u0027)"},{"line_number":1032,"context_line":"            cached \u003d jsonutils.loads(serialized)"},{"line_number":1033,"context_line":"            if cached \u003d\u003d \u0027invalid\u0027:"},{"line_number":1034,"context_line":"                self.LOG.debug(\u0027Cached Token is marked unauthorized\u0027)"},{"line_number":1035,"context_line":"                raise InvalidUserToken(\u0027Token authorization failed\u0027)"},{"line_number":1036,"context_line":""},{"line_number":1037,"context_line":"            data, expires \u003d cached"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVX%2F%2F%2BPM%3D","line":1034,"in_reply_to":"AAAAVX%2F%2F%2By8%3D","updated":"2014-02-27 03:27:05.000000000","message":"I think we should filter out auth tokens from all log statements.\n\nAt Nebula, our support team will have access to these logs, and the reason why we\u0027re filtering them out is because we don\u0027t want to force our customers to give us secrets just so that we can debug their cloud.","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c917dae9fe9f33e56d308851c686b0a968430fb7","unresolved":false,"context_lines":[{"line_number":1166,"context_line":"        \"\"\"Store invalid token in cache.\"\"\""},{"line_number":1167,"context_line":"        if self._cache:"},{"line_number":1168,"context_line":"            self.LOG.debug("},{"line_number":1169,"context_line":"                \u0027Marking token as unauthorized in memcache\u0027)"},{"line_number":1170,"context_line":"            self._cache_store(token_id, \u0027invalid\u0027)"},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"    def cert_file_missing(self, proc_output, file_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVX%2F%2F%2B2w%3D","line":1169,"updated":"2014-02-27 01:33:31.000000000","message":"What\u0027s the problem with logging an invalid token?","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":8180,"name":"Joel Friedly","email":"joelfriedly@gmail.com","username":"jfriedly"},"change_message_id":"293ea1f0c9a4b8bf927de9893cf1a25cdd0e757d","unresolved":false,"context_lines":[{"line_number":1166,"context_line":"        \"\"\"Store invalid token in cache.\"\"\""},{"line_number":1167,"context_line":"        if self._cache:"},{"line_number":1168,"context_line":"            self.LOG.debug("},{"line_number":1169,"context_line":"                \u0027Marking token as unauthorized in memcache\u0027)"},{"line_number":1170,"context_line":"            self._cache_store(token_id, \u0027invalid\u0027)"},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"    def cert_file_missing(self, proc_output, file_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVX%2F%2F%2BOo%3D","line":1169,"in_reply_to":"AAAAVX%2F%2F%2B2w%3D","updated":"2014-02-27 03:27:05.000000000","message":"This one isn\u0027t really necessary, but I figured it would be nicer to just say \"keystoneclient never logs auth tokens now\".","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c917dae9fe9f33e56d308851c686b0a968430fb7","unresolved":false,"context_lines":[{"line_number":1212,"context_line":"            self.LOG.warn(\"Authorization failed for token\")"},{"line_number":1213,"context_line":"            raise InvalidUserToken(\u0027Token authorization failed\u0027)"},{"line_number":1214,"context_line":"        if response.status_code \u003d\u003d 401:"},{"line_number":1215,"context_line":"            headers[\u0027X-Auth-Token\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027"},{"line_number":1216,"context_line":"            self.LOG.info("},{"line_number":1217,"context_line":"                \u0027Keystone rejected admin token %s, resetting\u0027, headers)"},{"line_number":1218,"context_line":"            self.admin_token \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVX%2F%2F%2B24%3D","line":1215,"updated":"2014-02-27 01:33:31.000000000","message":"no point of logging \u003cSANITIZED\u003e","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":8180,"name":"Joel Friedly","email":"joelfriedly@gmail.com","username":"jfriedly"},"change_message_id":"293ea1f0c9a4b8bf927de9893cf1a25cdd0e757d","unresolved":false,"context_lines":[{"line_number":1212,"context_line":"            self.LOG.warn(\"Authorization failed for token\")"},{"line_number":1213,"context_line":"            raise InvalidUserToken(\u0027Token authorization failed\u0027)"},{"line_number":1214,"context_line":"        if response.status_code \u003d\u003d 401:"},{"line_number":1215,"context_line":"            headers[\u0027X-Auth-Token\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027"},{"line_number":1216,"context_line":"            self.LOG.info("},{"line_number":1217,"context_line":"                \u0027Keystone rejected admin token %s, resetting\u0027, headers)"},{"line_number":1218,"context_line":"            self.admin_token \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVX%2F%2F%2BNc%3D","line":1215,"in_reply_to":"AAAAVX%2F%2F%2B24%3D","updated":"2014-02-27 03:27:05.000000000","message":"Fair enough, I\u0027ll make this just remove the %s in the log statement since headers will only contain the auth token at this point.","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"e51cb3ec539750a66d10e4ee83e16c149f07d1c8","unresolved":false,"context_lines":[{"line_number":1352,"context_line":"                                            additional_headers\u003dheaders)"},{"line_number":1353,"context_line":"        if response.status_code \u003d\u003d 401:"},{"line_number":1354,"context_line":"            if retry:"},{"line_number":1355,"context_line":"                headers[\u0027X-Auth-Token\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027"},{"line_number":1356,"context_line":"                self.LOG.info("},{"line_number":1357,"context_line":"                    \u0027Keystone rejected admin token %s, resetting admin token\u0027,"},{"line_number":1358,"context_line":"                    headers)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2Bc4c%3D","line":1355,"updated":"2014-02-21 03:41:30.000000000","message":"So i am concerned about the others but this one is definitely a problem. \n\nIf you make this change then you are actually changing the value of the token so it is going to be \u0027\u003cSANATIZED\u003e\u0027 when you try to use it later. The same is true for all the other places as well but in the others it seems to only happen right before a failure case in which case i don\u0027t think it will matter. \n\nThere is httpretty stub code that doesn\u0027t care about the token value which is why it isn\u0027t failing tests.","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c917dae9fe9f33e56d308851c686b0a968430fb7","unresolved":false,"context_lines":[{"line_number":1352,"context_line":"                                            additional_headers\u003dheaders)"},{"line_number":1353,"context_line":"        if response.status_code \u003d\u003d 401:"},{"line_number":1354,"context_line":"            if retry:"},{"line_number":1355,"context_line":"                headers[\u0027X-Auth-Token\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027"},{"line_number":1356,"context_line":"                self.LOG.info("},{"line_number":1357,"context_line":"                    \u0027Keystone rejected admin token %s, resetting admin token\u0027,"},{"line_number":1358,"context_line":"                    headers)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVX%2F%2F%2B3w%3D","line":1355,"in_reply_to":"AAAAU3%2F%2Fa88%3D","updated":"2014-02-27 01:33:31.000000000","message":"look like headers are reconstructed on the next call. But log statement is kinda confusing. We should change it to \n\nself.LOG.info(\u0027Keystone rejected admin token, resetting admin token\u0027)\n\nWhat the usefulness of logging \u003cSANITIZED\u003e?","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"6521466319e14bbef88da05ef11b08d35c06c975","unresolved":false,"context_lines":[{"line_number":1352,"context_line":"                                            additional_headers\u003dheaders)"},{"line_number":1353,"context_line":"        if response.status_code \u003d\u003d 401:"},{"line_number":1354,"context_line":"            if retry:"},{"line_number":1355,"context_line":"                headers[\u0027X-Auth-Token\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027"},{"line_number":1356,"context_line":"                self.LOG.info("},{"line_number":1357,"context_line":"                    \u0027Keystone rejected admin token %s, resetting admin token\u0027,"},{"line_number":1358,"context_line":"                    headers)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAU3%2F%2Fa88%3D","line":1355,"in_reply_to":"AAAAUX%2F%2Bbkc%3D","updated":"2014-02-26 18:36:59.000000000","message":"Yeah Joel it looks like you\u0027re right.","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":8180,"name":"Joel Friedly","email":"joelfriedly@gmail.com","username":"jfriedly"},"change_message_id":"536483832b4fd9c6b0cac204272a388e4b94caa6","unresolved":false,"context_lines":[{"line_number":1352,"context_line":"                                            additional_headers\u003dheaders)"},{"line_number":1353,"context_line":"        if response.status_code \u003d\u003d 401:"},{"line_number":1354,"context_line":"            if retry:"},{"line_number":1355,"context_line":"                headers[\u0027X-Auth-Token\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027"},{"line_number":1356,"context_line":"                self.LOG.info("},{"line_number":1357,"context_line":"                    \u0027Keystone rejected admin token %s, resetting admin token\u0027,"},{"line_number":1358,"context_line":"                    headers)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2Bbkc%3D","line":1355,"in_reply_to":"AAAAUX%2F%2Bc4c%3D","updated":"2014-02-21 07:14:46.000000000","message":"``headers`` is a local variable that is constructed in this function.  Once the return statement below is reached, nothing else will read ``headers``.  The recursive call will create a new variable in its own scope.","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":8180,"name":"Joel Friedly","email":"joelfriedly@gmail.com","username":"jfriedly"},"change_message_id":"293ea1f0c9a4b8bf927de9893cf1a25cdd0e757d","unresolved":false,"context_lines":[{"line_number":1352,"context_line":"                                            additional_headers\u003dheaders)"},{"line_number":1353,"context_line":"        if response.status_code \u003d\u003d 401:"},{"line_number":1354,"context_line":"            if retry:"},{"line_number":1355,"context_line":"                headers[\u0027X-Auth-Token\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027"},{"line_number":1356,"context_line":"                self.LOG.info("},{"line_number":1357,"context_line":"                    \u0027Keystone rejected admin token %s, resetting admin token\u0027,"},{"line_number":1358,"context_line":"                    headers)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVX%2F%2F%2BNE%3D","line":1355,"in_reply_to":"AAAAVX%2F%2F%2B3w%3D","updated":"2014-02-27 03:27:05.000000000","message":"Same as above, will fix to simply not log headers","commit_id":"72ec8b878fdc2a5f23f34d6a525b35f5c7295b6d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"5f511f4e240e3582a8166aff8e7f80adbc422678","unresolved":false,"context_lines":[{"line_number":814,"context_line":"            try:"},{"line_number":815,"context_line":"                data[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027] \u003d \u0027\u003cSANITIZED\u003e\u0027"},{"line_number":816,"context_line":"            except:  # pylint: disable\u003dW0702"},{"line_number":817,"context_line":"                pass"},{"line_number":818,"context_line":"            self.LOG.warn("},{"line_number":819,"context_line":"                \"Unable to parse expiration time from token: %s\", data)"},{"line_number":820,"context_line":"            raise ServiceError(\u0027invalid json response\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVX%2F%2F%2BBQ%3D","line":817,"updated":"2014-02-27 03:59:29.000000000","message":"I apologize. I was reading the code wrong. We probably don\u0027t need the try-catch here. If data is not a dict, you\u0027ll get TypeError. For attribute doesn\u0027t exist, it will result in KeyError.  ValueError likely come from time parsing.","commit_id":"2996fbca7eba365efee0ffee5ca9099ef2081e90"},{"author":{"_account_id":8180,"name":"Joel Friedly","email":"joelfriedly@gmail.com","username":"jfriedly"},"change_message_id":"b67c9f2b2c06115af3c8ad3692903711ba252f12","unresolved":false,"context_lines":[{"line_number":1224,"context_line":"                           response.status_code)"},{"line_number":1225,"context_line":"        if retry:"},{"line_number":1226,"context_line":"            self.LOG.info(\u0027Retrying validation\u0027)"},{"line_number":1227,"context_line":"            return self._validate_user_token(user_token, env, False)"},{"line_number":1228,"context_line":"        else:"},{"line_number":1229,"context_line":"            self.LOG.warn(\"Invalid user token. Keystone response: %s\", data)"},{"line_number":1230,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVX%2F%2F%2BFw%3D","line":1227,"updated":"2014-02-27 03:45:14.000000000","message":"Not related to this PR, but running pylint on this file highlighted that ``env`` isn\u0027t defined here.  I poked around a bit and didn\u0027t see an obvious solution, but if someone has one I can put it in here.\n\nAlternatively, I can file a ticket.","commit_id":"2996fbca7eba365efee0ffee5ca9099ef2081e90"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"5f511f4e240e3582a8166aff8e7f80adbc422678","unresolved":false,"context_lines":[{"line_number":1224,"context_line":"                           response.status_code)"},{"line_number":1225,"context_line":"        if retry:"},{"line_number":1226,"context_line":"            self.LOG.info(\u0027Retrying validation\u0027)"},{"line_number":1227,"context_line":"            return self._validate_user_token(user_token, env, False)"},{"line_number":1228,"context_line":"        else:"},{"line_number":1229,"context_line":"            self.LOG.warn(\"Invalid user token. Keystone response: %s\", data)"},{"line_number":1230,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVX%2F%2F%2BDU%3D","line":1227,"in_reply_to":"AAAAVX%2F%2F%2BFw%3D","updated":"2014-02-27 03:59:29.000000000","message":"Joel, please file a ticket and fix in a follow on patch. Easier to track things that way.","commit_id":"2996fbca7eba365efee0ffee5ca9099ef2081e90"}]}
