)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Don\u0027t log sensitive auth data"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add the ability to turn off logging from the session object and then"},{"line_number":10,"context_line":"handle logging of auth requests within there own sections."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"V2 and V3 auth is handled differently as there doesn\u0027t seem to be much"},{"line_number":13,"context_line":"point in enabling customizable log handling when there won\u0027t be any new"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1ae5cdf2_a58a4b18","line":10,"updated":"2014-06-23 19:58:50.000000000","message":"change \"there\" to \"their\".\n\nsections?","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"29d05d949733ebb84bed2fa5489e63e6915784b0","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Don\u0027t log sensitive auth data"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add the ability to turn off logging from the session object and then"},{"line_number":10,"context_line":"handle logging of auth requests within there own sections."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"V2 and V3 auth is handled differently as there doesn\u0027t seem to be much"},{"line_number":13,"context_line":"point in enabling customizable log handling when there won\u0027t be any new"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1ae5cdf2_e5e4203e","line":10,"in_reply_to":"1ae5cdf2_a58a4b18","updated":"2014-06-25 02:44:32.000000000","message":"Done","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"99e246723ddb387758937b6159c8c843febf6b73","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"V2 and V3 auth is handled differently as there doesn\u0027t seem to be much"},{"line_number":13,"context_line":"point in enabling customizable log handling when there won\u0027t be any new"},{"line_number":14,"context_line":"authentication methods."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I3dabb94ab047e86b8730e73416c1a1c333688489"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1ae5cdf2_3c6ac41b","line":14,"updated":"2014-06-24 05:01:16.000000000","message":"There wont be new authentication methods for V2 or V3? This doesn\u0027t seem straightforward. Does this mean no custom log handling is needed, it is only needed for one, is only needed for? When is the custom logging needed?","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"26cd1ab554c445f808cfeaebcec24dc7183977c5","unresolved":false,"context_lines":[{"line_number":12,"context_line":"V2 and V3 auth is handled differently as there doesn\u0027t seem to be much"},{"line_number":13,"context_line":"point in enabling customizable log handling when there won\u0027t be any new"},{"line_number":14,"context_line":"authentication methods."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I3dabb94ab047e86b8730e73416c1a1c333688489"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"baada198_7fef5587","line":15,"updated":"2014-07-13 21:55:57.000000000","message":"This needs a bug or blueprint.","commit_id":"327313040b82844944aa848bba0d68f9c1896efe"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bb5e151674f82f6a64d79bc555bbcc916bdedd2d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"V2 and V3 auth is handled differently as there doesn\u0027t seem to be much"},{"line_number":13,"context_line":"point in enabling customizable log handling when there won\u0027t be any new"},{"line_number":14,"context_line":"authentication methods."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I3dabb94ab047e86b8730e73416c1a1c333688489"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"baada198_99279e11","line":15,"in_reply_to":"baada198_39bbf2c4","updated":"2014-07-15 14:37:01.000000000","message":"Also,\n\n Closes-Bug: #1327019","commit_id":"327313040b82844944aa848bba0d68f9c1896efe"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4f848b40e9bb2db34f1cf1539dcd8f0683ab0194","unresolved":false,"context_lines":[{"line_number":12,"context_line":"V2 and V3 auth is handled differently as there doesn\u0027t seem to be much"},{"line_number":13,"context_line":"point in enabling customizable log handling when there won\u0027t be any new"},{"line_number":14,"context_line":"authentication methods."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I3dabb94ab047e86b8730e73416c1a1c333688489"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"baada198_39bbf2c4","line":15,"in_reply_to":"baada198_7fef5587","updated":"2014-07-15 14:35:29.000000000","message":"The bug is\n\n  Closes-Bug: #1004114","commit_id":"327313040b82844944aa848bba0d68f9c1896efe"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"629e6f459141d190b7f017a379bfbc8998ed6327","unresolved":false,"context_lines":[{"line_number":14,"context_line":"authentication methods."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I3dabb94ab047e86b8730e73416c1a1c333688489"},{"line_number":17,"context_line":"Closes-Bug: #1004114"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_cd15bf4a","line":17,"updated":"2014-07-16 00:57:09.000000000","message":"Should also have\n\n Closes-Bug: #1327019","commit_id":"1e00d27e83a1bf08d5c29bd783f2e938254cab53"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3129abff3f3c15ea496c2a28ed61f94bf5b7d1ad","unresolved":false,"context_lines":[{"line_number":14,"context_line":"authentication methods."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I3dabb94ab047e86b8730e73416c1a1c333688489"},{"line_number":17,"context_line":"Closes-Bug: #1004114"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_b00d3eeb","line":17,"in_reply_to":"baada198_cd15bf4a","updated":"2014-07-16 01:13:07.000000000","message":"Done","commit_id":"1e00d27e83a1bf08d5c29bd783f2e938254cab53"}],"keystoneclient/auth/identity/v2.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":25,"context_line":"_REDACTED \u003d \u0027*** REDACTED ***\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def _redact(target, path, text\u003d_REDACTED):"},{"line_number":29,"context_line":"    key \u003d path.pop()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # move to the most nested dict"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_a5332b12","line":28,"updated":"2014-06-23 19:58:50.000000000","message":"a docstring would be great for those who have to maintain this going forward.","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"99e246723ddb387758937b6159c8c843febf6b73","unresolved":false,"context_lines":[{"line_number":25,"context_line":"_REDACTED \u003d \u0027*** REDACTED ***\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def _redact(target, path, text\u003d_REDACTED):"},{"line_number":29,"context_line":"    key \u003d path.pop()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # move to the most nested dict"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_dcc9e026","line":28,"in_reply_to":"1ae5cdf2_a5332b12","updated":"2014-06-24 05:01:16.000000000","message":"I second that a docstring is needed. It took me longer than i am willing to admit to understand what was going on here.","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"29d05d949733ebb84bed2fa5489e63e6915784b0","unresolved":false,"context_lines":[{"line_number":25,"context_line":"_REDACTED \u003d \u0027*** REDACTED ***\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def _redact(target, path, text\u003d_REDACTED):"},{"line_number":29,"context_line":"    key \u003d path.pop()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # move to the most nested dict"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_cece5c5b","line":28,"in_reply_to":"1ae5cdf2_dcc9e026","updated":"2014-06-25 02:44:32.000000000","message":"I made an attempt at at docstring","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @classmethod"},{"line_number":64,"context_line":"    def _http_log_request(cls, session, url, params, headers):"},{"line_number":65,"context_line":"        if not _logger.isEnabledFor(logging.DEBUG):"},{"line_number":66,"context_line":"            return"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        params \u003d copy.deepcopy(params)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_8098ddcd","line":65,"updated":"2014-06-23 19:58:50.000000000","message":"suggest call something on the session since it knows that http_log_request will do a debug log. Maybe like:\n\n session.http_logging.is_enabled(_logger)","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        params \u003d copy.deepcopy(params)"},{"line_number":69,"context_line":"        headers \u003d copy.deepcopy(headers)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        _redact(params, [\u0027auth\u0027, \u0027passwordCredentials\u0027, \u0027username\u0027])"},{"line_number":72,"context_line":"        _redact(params, [\u0027auth\u0027, \u0027token\u0027, \u0027id\u0027])"},{"line_number":73,"context_line":"        _redact(headers, [\u0027X-Auth-Token\u0027])"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_85470f7a","line":71,"updated":"2014-06-23 19:58:50.000000000","message":"it\u0027s the plugin that knows what the params are going to be and what needs to protected, so seems like that should be providing this info.\n\nAlso, there should be a test that shows that the password is redacted and not the username.","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"29d05d949733ebb84bed2fa5489e63e6915784b0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        params \u003d copy.deepcopy(params)"},{"line_number":69,"context_line":"        headers \u003d copy.deepcopy(headers)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        _redact(params, [\u0027auth\u0027, \u0027passwordCredentials\u0027, \u0027username\u0027])"},{"line_number":72,"context_line":"        _redact(params, [\u0027auth\u0027, \u0027token\u0027, \u0027id\u0027])"},{"line_number":73,"context_line":"        _redact(headers, [\u0027X-Auth-Token\u0027])"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_88a6110e","line":71,"in_reply_to":"1ae5cdf2_85470f7a","updated":"2014-06-25 02:44:32.000000000","message":"++ on the test. As written it\u0027s the username that is redacted.","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @classmethod"},{"line_number":82,"context_line":"    def _http_log_response(cls, session, response):"},{"line_number":83,"context_line":"        if not _logger.isEnabledFor(logging.DEBUG):"},{"line_number":84,"context_line":"            return"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        headers \u003d response.headers.copy()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_20a9c9dd","line":83,"updated":"2014-06-23 19:58:50.000000000","message":"suggest call something on the session since it knows that http_log_request will do a debug log. Maybe like:\n\n session.http_logging.is_enabled(_logger)","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":11717,"name":"Ryan Oshima","email":"ryan.oshima@hp.com","username":"RyanOshima"},"change_message_id":"11173d33c83b396f09c4b132b8a7cfbafd75fa2b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \"\"\"Replace the value of a key in `target`."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    The key can be at the top level by specifying a list with a single"},{"line_number":32,"context_line":"    key as the path. Nested dictionaries are also support by passing a"},{"line_number":33,"context_line":"    list of keys to be navigated to find the one that should be replaced."},{"line_number":34,"context_line":"    In this case the last one is the one that will be replaced."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_98d47bea","line":32,"updated":"2014-06-25 17:17:11.000000000","message":"\"support\"-\u003e\"supported\"","commit_id":"1ee58e31b356e0a2e5b40b4e63e5cbc01253f994"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4be9d0649e9f1d872d5b6a0599d89ea3cf48e2ef","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \"\"\"Replace the value of a key in `target`."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    The key can be at the top level by specifying a list with a single"},{"line_number":32,"context_line":"    key as the path. Nested dictionaries are also support by passing a"},{"line_number":33,"context_line":"    list of keys to be navigated to find the one that should be replaced."},{"line_number":34,"context_line":"    In this case the last one is the one that will be replaced."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_95f7c1d2","line":32,"in_reply_to":"1ae5cdf2_98d47bea","updated":"2014-07-15 18:13:04.000000000","message":"Done","commit_id":"1ee58e31b356e0a2e5b40b4e63e5cbc01253f994"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"93a6d78a6c8412961bcc2c036bbb80f1d82ddd70","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    list of keys to be navigated to find the one that should be replaced."},{"line_number":34,"context_line":"    In this case the last one is the one that will be replaced."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    :param target dict: the dictionary that may have a key to be redacted;"},{"line_number":37,"context_line":"                        modified in place"},{"line_number":38,"context_line":"    :param path list: a list representing the nested structure in `target`"},{"line_number":39,"context_line":"                      that should be redacted; modified in place"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab895d6_826e3bc8","line":36,"updated":"2014-06-29 16:13:02.000000000","message":"The type comes before the name, see http://sphinx-doc.org/domains.html#info-field-lists","commit_id":"1ee58e31b356e0a2e5b40b4e63e5cbc01253f994"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4be9d0649e9f1d872d5b6a0599d89ea3cf48e2ef","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    list of keys to be navigated to find the one that should be replaced."},{"line_number":34,"context_line":"    In this case the last one is the one that will be replaced."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    :param target dict: the dictionary that may have a key to be redacted;"},{"line_number":37,"context_line":"                        modified in place"},{"line_number":38,"context_line":"    :param path list: a list representing the nested structure in `target`"},{"line_number":39,"context_line":"                      that should be redacted; modified in place"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_55128909","line":36,"in_reply_to":"dab895d6_826e3bc8","updated":"2014-07-15 18:13:04.000000000","message":"Done","commit_id":"1ee58e31b356e0a2e5b40b4e63e5cbc01253f994"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a9489964defde77d81565afa7d3470cbcf61b724","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        params \u003d copy.deepcopy(params)"},{"line_number":84,"context_line":"        headers \u003d copy.deepcopy(headers)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        _redact(params, [\u0027auth\u0027, \u0027passwordCredentials\u0027, \u0027username\u0027])"},{"line_number":87,"context_line":"        _redact(params, [\u0027auth\u0027, \u0027token\u0027, \u0027id\u0027])"},{"line_number":88,"context_line":"        _redact(headers, [\u0027X-Auth-Token\u0027])"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_cfcb25a2","line":86,"updated":"2014-07-15 00:39:11.000000000","message":"There should be a test to ensure that the user\u0027s password is redacted and not the username.","commit_id":"327313040b82844944aa848bba0d68f9c1896efe"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"26cd1ab554c445f808cfeaebcec24dc7183977c5","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        params \u003d copy.deepcopy(params)"},{"line_number":84,"context_line":"        headers \u003d copy.deepcopy(headers)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        _redact(params, [\u0027auth\u0027, \u0027passwordCredentials\u0027, \u0027username\u0027])"},{"line_number":87,"context_line":"        _redact(params, [\u0027auth\u0027, \u0027token\u0027, \u0027id\u0027])"},{"line_number":88,"context_line":"        _redact(headers, [\u0027X-Auth-Token\u0027])"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_bfe56da5","line":86,"updated":"2014-07-13 21:55:57.000000000","message":"give a name to \"[\u0027auth\u0027, \u0027passwordCredentials\u0027, \u0027username\u0027]\" so that readers will know what it is without having to look up the function: path\u003d[\u0027auth\u0027, \u0027passwordCredentials\u0027, \u0027username\u0027]\n\nthis applies to all these calls.","commit_id":"327313040b82844944aa848bba0d68f9c1896efe"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a9489964defde77d81565afa7d3470cbcf61b724","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        _redact(params, [\u0027auth\u0027, \u0027passwordCredentials\u0027, \u0027username\u0027])"},{"line_number":87,"context_line":"        _redact(params, [\u0027auth\u0027, \u0027token\u0027, \u0027id\u0027])"},{"line_number":88,"context_line":"        _redact(headers, [\u0027X-Auth-Token\u0027])"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        session.http_log_request(url,"},{"line_number":91,"context_line":"                                 method\u003d\u0027POST\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_2f6021ce","line":88,"updated":"2014-07-15 00:39:11.000000000","message":"X-Subject-Token should also be redacted.","commit_id":"327313040b82844944aa848bba0d68f9c1896efe"}],"keystoneclient/auth/identity/v3.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        return body"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def _get_auth_data(self, session, log):"},{"line_number":100,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027}"},{"line_number":101,"context_line":"        ident \u003d {}"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_00792d30","line":99,"updated":"2014-06-23 19:58:50.000000000","message":"A docstring would be useful for those who have to maintain this going forward.","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        return headers, ident"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def get_auth_ref(self, session, **kwargs):"},{"line_number":120,"context_line":"        headers, ident \u003d self._get_auth_data(session, log\u003dFalse)"},{"line_number":121,"context_line":"        body \u003d self._get_base_auth_ref()"},{"line_number":122,"context_line":"        debugging \u003d _logger.isEnabledFor(logging.DEBUG)"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_c096653e","line":120,"updated":"2014-06-23 19:58:50.000000000","message":"if log was an enum then wouldn\u0027t need to use True/False here.","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    def get_auth_ref(self, session, **kwargs):"},{"line_number":120,"context_line":"        headers, ident \u003d self._get_auth_data(session, log\u003dFalse)"},{"line_number":121,"context_line":"        body \u003d self._get_base_auth_ref()"},{"line_number":122,"context_line":"        debugging \u003d _logger.isEnabledFor(logging.DEBUG)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        if debugging:"},{"line_number":125,"context_line":"            log_headers, log_ident \u003d self._get_auth_data(session, log\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_e037e14b","line":122,"updated":"2014-06-23 19:58:50.000000000","message":"this function should be asking session if it\u0027s going to log, since it\u0027s session.http_log_request/response that knows what level it\u0027s logged at.","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"29d05d949733ebb84bed2fa5489e63e6915784b0","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    def get_auth_ref(self, session, **kwargs):"},{"line_number":120,"context_line":"        headers, ident \u003d self._get_auth_data(session, log\u003dFalse)"},{"line_number":121,"context_line":"        body \u003d self._get_base_auth_ref()"},{"line_number":122,"context_line":"        debugging \u003d _logger.isEnabledFor(logging.DEBUG)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        if debugging:"},{"line_number":125,"context_line":"            log_headers, log_ident \u003d self._get_auth_data(session, log\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_eef07894","line":122,"in_reply_to":"1ae5cdf2_e037e14b","updated":"2014-06-25 02:44:32.000000000","message":"I don\u0027t think this is entirely true since session.http_log_request doesn\u0027t actually do any logging itself. It uses the logger passed into it by the caller.","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"629e6f459141d190b7f017a379bfbc8998ed6327","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if not ident:"},{"line_number":115,"context_line":"            raise exceptions.AuthorizationFailure(\u0027Authentication method \u0027"},{"line_number":116,"context_line":"                                                  \u0027required (e.g. password)\u0027)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        return headers, ident"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_30492e61","line":116,"updated":"2014-07-16 00:57:09.000000000","message":"would be easier to grep for this string if it was all on one line.","commit_id":"1e00d27e83a1bf08d5c29bd783f2e938254cab53"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3129abff3f3c15ea496c2a28ed61f94bf5b7d1ad","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if not ident:"},{"line_number":115,"context_line":"            raise exceptions.AuthorizationFailure(\u0027Authentication method \u0027"},{"line_number":116,"context_line":"                                                  \u0027required (e.g. password)\u0027)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        return headers, ident"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_f0cb3671","line":116,"in_reply_to":"baada198_30492e61","updated":"2014-07-16 01:13:07.000000000","message":"Done","commit_id":"1e00d27e83a1bf08d5c29bd783f2e938254cab53"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"629e6f459141d190b7f017a379bfbc8998ed6327","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        a redacted body if necessary. If your auth data is not secret you can"},{"line_number":218,"context_line":"        ignore this method."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        The parameters will be exactly the same as get_auth_data."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        :return tuple(string, dict): The identifier of this plugin and a dict"},{"line_number":223,"context_line":"                                     of authentication data for the auth type."}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_90859a5b","line":220,"updated":"2014-07-16 00:57:09.000000000","message":"\"get_auth_data\" should be a link.","commit_id":"1e00d27e83a1bf08d5c29bd783f2e938254cab53"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3129abff3f3c15ea496c2a28ed61f94bf5b7d1ad","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        a redacted body if necessary. If your auth data is not secret you can"},{"line_number":218,"context_line":"        ignore this method."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        The parameters will be exactly the same as get_auth_data."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        :return tuple(string, dict): The identifier of this plugin and a dict"},{"line_number":223,"context_line":"                                     of authentication data for the auth type."}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_d0b712f4","line":220,"in_reply_to":"baada198_90859a5b","updated":"2014-07-16 01:13:07.000000000","message":"Done","commit_id":"1e00d27e83a1bf08d5c29bd783f2e938254cab53"}],"keystoneclient/session.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        if self.verify is False:"},{"line_number":128,"context_line":"            string_parts.append(\u0027--insecure\u0027)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        if method:"},{"line_number":131,"context_line":"            string_parts.extend([\u0027-X\u0027, method])"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        string_parts.append(url)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_60003103","line":130,"updated":"2014-06-23 19:58:50.000000000","message":"there\u0027s no need to pass -X if it\u0027s POST and json or data.","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"99e246723ddb387758937b6159c8c843febf6b73","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        if self.verify is False:"},{"line_number":128,"context_line":"            string_parts.append(\u0027--insecure\u0027)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        if method:"},{"line_number":131,"context_line":"            string_parts.extend([\u0027-X\u0027, method])"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        string_parts.append(url)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_dc9720ea","line":130,"in_reply_to":"1ae5cdf2_60003103","updated":"2014-06-24 05:01:16.000000000","message":"I disagree, consistency for the debug makes sense, keep -X POST for explicitness (it isn\u0027t wrong to include it)","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        if headers:"},{"line_number":136,"context_line":"            for header in six.iteritems(headers):"},{"line_number":137,"context_line":"                string_parts.append(\u0027-H \"%s: %s\"\u0027 % header)"},{"line_number":138,"context_line":"        if json:"},{"line_number":139,"context_line":"            data \u003d jsonutils.dumps(json)"},{"line_number":140,"context_line":"        if data:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_3b31f8ed","line":137,"updated":"2014-06-23 19:58:50.000000000","message":"any \" in header should be escaped","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        if json:"},{"line_number":139,"context_line":"            data \u003d jsonutils.dumps(json)"},{"line_number":140,"context_line":"        if data:"},{"line_number":141,"context_line":"            string_parts.append(\"-d \u0027%s\u0027\" % data)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        logger.debug(\u0027 \u0027.join(string_parts))"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_db22d4a2","line":141,"updated":"2014-06-23 19:58:50.000000000","message":"any \u0027 in data should be escaped.","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"29d05d949733ebb84bed2fa5489e63e6915784b0","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        if json:"},{"line_number":139,"context_line":"            data \u003d jsonutils.dumps(json)"},{"line_number":140,"context_line":"        if data:"},{"line_number":141,"context_line":"            string_parts.append(\"-d \u0027%s\u0027\" % data)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        logger.debug(\u0027 \u0027.join(string_parts))"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_ce23bc04","line":141,"in_reply_to":"1ae5cdf2_5caa301b","updated":"2014-06-25 02:44:32.000000000","message":"I believe you are correct, json.dumps will emit \\\u0027 when a string contains a single quote.","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"99e246723ddb387758937b6159c8c843febf6b73","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        if json:"},{"line_number":139,"context_line":"            data \u003d jsonutils.dumps(json)"},{"line_number":140,"context_line":"        if data:"},{"line_number":141,"context_line":"            string_parts.append(\"-d \u0027%s\u0027\" % data)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        logger.debug(\u0027 \u0027.join(string_parts))"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_5caa301b","line":141,"in_reply_to":"1ae5cdf2_db22d4a2","updated":"2014-06-24 05:01:16.000000000","message":"json.dumps should handle the escaping iirc","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"99e246723ddb387758937b6159c8c843febf6b73","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        if headers:"},{"line_number":166,"context_line":"            string_parts.append(\u0027%s\u0027 % headers)"},{"line_number":167,"context_line":"        if text:"},{"line_number":168,"context_line":"            string_parts.append(\u0027\\nRESP BODY: %s\\n\u0027 % text)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        logger.debug(\u0027 \u0027.join(string_parts))"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_1c47c878","line":168,"updated":"2014-06-24 05:01:16.000000000","message":"This makes me realize we need to pull out some of the data from the token body...","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        if redirect is None:"},{"line_number":300,"context_line":"            redirect \u003d self.redirect"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        response \u003d self._send_request(url, method, redirect, log, **kwargs)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        # handle getting a 401 Unauthorized response by invalidating the plugin"},{"line_number":305,"context_line":"        # and then retrying the request. This is only tried once."}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_3be4983b","line":302,"updated":"2014-06-23 19:58:50.000000000","message":"why was the variable renamed? seems like it\u0027s just adding extra changes.","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1ef16d4edcc7224811dd89b9618d9d79584f7db","unresolved":false,"context_lines":[{"line_number":325,"context_line":"        # API. See: https://en.wikipedia.org/wiki/Post/Redirect/Get"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        try:"},{"line_number":328,"context_line":"            response \u003d self.session.request(method, url, **kwargs)"},{"line_number":329,"context_line":"        except requests.exceptions.SSLError:"},{"line_number":330,"context_line":"            msg \u003d \u0027SSL exception connecting to %s\u0027 % url"},{"line_number":331,"context_line":"            raise exceptions.SSLError(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_dbf574ee","line":328,"updated":"2014-06-23 19:58:50.000000000","message":"why rename the variable?","commit_id":"378997ac299863bdba8a9901bebbf2bebd011a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"629e6f459141d190b7f017a379bfbc8998ed6327","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        if redirect is None:"},{"line_number":322,"context_line":"            redirect \u003d self.redirect"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        response \u003d self._send_request(url, method, redirect, log, **kwargs)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        # handle getting a 401 Unauthorized response by invalidating the plugin"},{"line_number":327,"context_line":"        # and then retrying the request. This is only tried once."}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_90d3da5e","line":324,"updated":"2014-07-16 00:57:09.000000000","message":"changing the name from resp to response is unnecessary and could lead to merge conflicts.","commit_id":"1e00d27e83a1bf08d5c29bd783f2e938254cab53"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3129abff3f3c15ea496c2a28ed61f94bf5b7d1ad","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        if redirect is None:"},{"line_number":322,"context_line":"            redirect \u003d self.redirect"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        response \u003d self._send_request(url, method, redirect, log, **kwargs)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        # handle getting a 401 Unauthorized response by invalidating the plugin"},{"line_number":327,"context_line":"        # and then retrying the request. This is only tried once."}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_1090aa4d","line":324,"in_reply_to":"baada198_90d3da5e","updated":"2014-07-16 01:13:07.000000000","message":"Done","commit_id":"1e00d27e83a1bf08d5c29bd783f2e938254cab53"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"629e6f459141d190b7f017a379bfbc8998ed6327","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        # API. See: https://en.wikipedia.org/wiki/Post/Redirect/Get"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        try:"},{"line_number":350,"context_line":"            response \u003d self.session.request(method, url, **kwargs)"},{"line_number":351,"context_line":"        except requests.exceptions.SSLError:"},{"line_number":352,"context_line":"            msg \u003d \u0027SSL exception connecting to %s\u0027 % url"},{"line_number":353,"context_line":"            raise exceptions.SSLError(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_d0cd52b9","line":350,"updated":"2014-07-16 00:57:09.000000000","message":"changing the name from resp to response is unnecessary and could lead to merge conflicts.","commit_id":"1e00d27e83a1bf08d5c29bd783f2e938254cab53"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3129abff3f3c15ea496c2a28ed61f94bf5b7d1ad","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        # API. See: https://en.wikipedia.org/wiki/Post/Redirect/Get"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        try:"},{"line_number":350,"context_line":"            response \u003d self.session.request(method, url, **kwargs)"},{"line_number":351,"context_line":"        except requests.exceptions.SSLError:"},{"line_number":352,"context_line":"            msg \u003d \u0027SSL exception connecting to %s\u0027 % url"},{"line_number":353,"context_line":"            raise exceptions.SSLError(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_309dae67","line":350,"in_reply_to":"baada198_d0cd52b9","updated":"2014-07-16 01:13:07.000000000","message":"Done","commit_id":"1e00d27e83a1bf08d5c29bd783f2e938254cab53"}],"keystoneclient/tests/v2_0/test_users.py":[{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"0861e7a5a36749a62f40452d2f02f478a04f0c29","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    def test_create(self):"},{"line_number":48,"context_line":"        tenant_id \u003d uuid.uuid4().hex"},{"line_number":49,"context_line":"        user_id \u003d uuid.uuid4().hex"},{"line_number":50,"context_line":"        password \u003d uuid.uuid4().hex"},{"line_number":51,"context_line":"        req_body \u003d {"},{"line_number":52,"context_line":"            \"user\": {"},{"line_number":53,"context_line":"                \"name\": \"gabriel\","}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_08d5881a","line":50,"updated":"2014-07-24 05:45:21.000000000","message":"The commit msg has no mention of this change :)","commit_id":"d25e37f7e1b5fbca4858ccf0f6049b546fba4dec"},{"author":{"_account_id":9098,"name":"Nathan Kinder","email":"nkinder@redhat.com","username":"nkinder"},"change_message_id":"2de6d640e1901328f3f91d58c595ef46b905018c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    def test_create(self):"},{"line_number":48,"context_line":"        tenant_id \u003d uuid.uuid4().hex"},{"line_number":49,"context_line":"        user_id \u003d uuid.uuid4().hex"},{"line_number":50,"context_line":"        password \u003d uuid.uuid4().hex"},{"line_number":51,"context_line":"        req_body \u003d {"},{"line_number":52,"context_line":"            \"user\": {"},{"line_number":53,"context_line":"                \"name\": \"gabriel\","}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_a81c8b78","line":50,"in_reply_to":"baada198_08d5881a","updated":"2014-07-24 14:21:46.000000000","message":"I thought it was pretty clear that this is to allow the tests to actually cover the fixes.\n\nWe need to test that the passwords are not logged, so we need to have a unique (but expected) password to look for in the log for the assertion at line 84.  Looking for the old password of \"test\" has too much chance of a false failure, especially given the \"email\" value in the test user below.","commit_id":"d25e37f7e1b5fbca4858ccf0f6049b546fba4dec"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"b4f3ede87c3474ea64c6206c6295d7c5d8cd09b4","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    def test_create(self):"},{"line_number":48,"context_line":"        tenant_id \u003d uuid.uuid4().hex"},{"line_number":49,"context_line":"        user_id \u003d uuid.uuid4().hex"},{"line_number":50,"context_line":"        password \u003d uuid.uuid4().hex"},{"line_number":51,"context_line":"        req_body \u003d {"},{"line_number":52,"context_line":"            \"user\": {"},{"line_number":53,"context_line":"                \"name\": \"gabriel\","}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_3721b2b4","line":50,"in_reply_to":"baada198_8eb50fd2","updated":"2014-07-24 16:05:39.000000000","message":"Thanks.","commit_id":"d25e37f7e1b5fbca4858ccf0f6049b546fba4dec"},{"author":{"_account_id":9098,"name":"Nathan Kinder","email":"nkinder@redhat.com","username":"nkinder"},"change_message_id":"686a0e02bfd1b0726dea76b952d2848455cc4f35","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    def test_create(self):"},{"line_number":48,"context_line":"        tenant_id \u003d uuid.uuid4().hex"},{"line_number":49,"context_line":"        user_id \u003d uuid.uuid4().hex"},{"line_number":50,"context_line":"        password \u003d uuid.uuid4().hex"},{"line_number":51,"context_line":"        req_body \u003d {"},{"line_number":52,"context_line":"            \"user\": {"},{"line_number":53,"context_line":"                \"name\": \"gabriel\","}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_8eb50fd2","line":50,"in_reply_to":"baada198_a81c8b78","updated":"2014-07-24 14:52:56.000000000","message":"I\u0027ve updated the commit message to describe the requests that we are surpressing logging for, which hopefully adds the clarification you are looking for.  I don\u0027t think the changes to the unit tests themselves should be called out, as it\u0027s implied that tests are being updated or added to cover the functionality implemented in the patch.","commit_id":"d25e37f7e1b5fbca4858ccf0f6049b546fba4dec"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"b4f3ede87c3474ea64c6206c6295d7c5d8cd09b4","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    def test_create(self):"},{"line_number":48,"context_line":"        tenant_id \u003d uuid.uuid4().hex"},{"line_number":49,"context_line":"        user_id \u003d uuid.uuid4().hex"},{"line_number":50,"context_line":"        password \u003d uuid.uuid4().hex"},{"line_number":51,"context_line":"        req_body \u003d {"},{"line_number":52,"context_line":"            \"user\": {"},{"line_number":53,"context_line":"                \"name\": \"gabriel\","}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_77508a2c","line":50,"in_reply_to":"baada198_a81c8b78","updated":"2014-07-24 16:05:39.000000000","message":"Thanks for the clarification Nathan.","commit_id":"d25e37f7e1b5fbca4858ccf0f6049b546fba4dec"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"0861e7a5a36749a62f40452d2f02f478a04f0c29","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                \"name\": \"gabriel\","},{"line_number":213,"context_line":"            }"},{"line_number":214,"context_line":"        }"},{"line_number":215,"context_line":"        password \u003d uuid.uuid4().hex"},{"line_number":216,"context_line":"        req_2 \u003d {"},{"line_number":217,"context_line":"            \"user\": {"},{"line_number":218,"context_line":"                \"id\": self.DEMO_USER_ID,"}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_48df803a","line":215,"updated":"2014-07-24 05:45:21.000000000","message":"Same here :)","commit_id":"d25e37f7e1b5fbca4858ccf0f6049b546fba4dec"},{"author":{"_account_id":9098,"name":"Nathan Kinder","email":"nkinder@redhat.com","username":"nkinder"},"change_message_id":"2de6d640e1901328f3f91d58c595ef46b905018c","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                \"name\": \"gabriel\","},{"line_number":213,"context_line":"            }"},{"line_number":214,"context_line":"        }"},{"line_number":215,"context_line":"        password \u003d uuid.uuid4().hex"},{"line_number":216,"context_line":"        req_2 \u003d {"},{"line_number":217,"context_line":"            \"user\": {"},{"line_number":218,"context_line":"                \"id\": self.DEMO_USER_ID,"}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_eb203d9c","line":215,"in_reply_to":"baada198_48df803a","updated":"2014-07-24 14:21:46.000000000","message":"Similar to my previous comment, we need to have a predictive password and I want to avoid having two hard-coded passwords in this test (as opposed to using a variable as I did).  Using a uuid seems like it would have less collision possibility that a real word (though I don\u0027t expect \"swordfish\" to be found).","commit_id":"d25e37f7e1b5fbca4858ccf0f6049b546fba4dec"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"0861e7a5a36749a62f40452d2f02f478a04f0c29","unresolved":false,"context_lines":[{"line_number":259,"context_line":"    @httpretty.activate"},{"line_number":260,"context_line":"    def test_update_own_password(self):"},{"line_number":261,"context_line":"        old_password \u003d uuid.uuid4().hex"},{"line_number":262,"context_line":"        new_password \u003d uuid.uuid4().hex"},{"line_number":263,"context_line":"        req_body \u003d {"},{"line_number":264,"context_line":"            \u0027user\u0027: {"},{"line_number":265,"context_line":"                \u0027password\u0027: new_password,"}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_68e52409","line":262,"updated":"2014-07-24 05:45:21.000000000","message":"And here :)","commit_id":"d25e37f7e1b5fbca4858ccf0f6049b546fba4dec"},{"author":{"_account_id":9098,"name":"Nathan Kinder","email":"nkinder@redhat.com","username":"nkinder"},"change_message_id":"2de6d640e1901328f3f91d58c595ef46b905018c","unresolved":false,"context_lines":[{"line_number":259,"context_line":"    @httpretty.activate"},{"line_number":260,"context_line":"    def test_update_own_password(self):"},{"line_number":261,"context_line":"        old_password \u003d uuid.uuid4().hex"},{"line_number":262,"context_line":"        new_password \u003d uuid.uuid4().hex"},{"line_number":263,"context_line":"        req_body \u003d {"},{"line_number":264,"context_line":"            \u0027user\u0027: {"},{"line_number":265,"context_line":"                \u0027password\u0027: new_password,"}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_ab51e50f","line":262,"in_reply_to":"baada198_68e52409","updated":"2014-07-24 14:21:46.000000000","message":"Same as my previous reply... :)","commit_id":"d25e37f7e1b5fbca4858ccf0f6049b546fba4dec"}],"keystoneclient/v2_0/users.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"9f04fc03420d24488a3dcbf3032a0dd9a9845606","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                           \"tenantId\": tenant_id,"},{"line_number":100,"context_line":"                           \"email\": email,"},{"line_number":101,"context_line":"                           \"enabled\": enabled}}"},{"line_number":102,"context_line":"        return self._create(\u0027/users\u0027, params, \"user\", log\u003dbool(password))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def delete(self, user):"},{"line_number":105,"context_line":"        \"\"\"Delete a user.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_ed1dd878","line":102,"updated":"2014-07-23 17:52:43.000000000","message":"this doesn\u0027t look right\n\nlog should be (not bool(password))\n\nwe log only if password is not specify right?","commit_id":"faba4775c6adcc589b2b45df9e40ec48d1de1ac1"},{"author":{"_account_id":9098,"name":"Nathan Kinder","email":"nkinder@redhat.com","username":"nkinder"},"change_message_id":"c0d4b0352f7bc559e8c6cd5c3bcacecbb78f3c15","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                           \"tenantId\": tenant_id,"},{"line_number":100,"context_line":"                           \"email\": email,"},{"line_number":101,"context_line":"                           \"enabled\": enabled}}"},{"line_number":102,"context_line":"        return self._create(\u0027/users\u0027, params, \"user\", log\u003dbool(password))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def delete(self, user):"},{"line_number":105,"context_line":"        \"\"\"Delete a user.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_cb2d55aa","line":102,"in_reply_to":"baada198_ed1dd878","updated":"2014-07-23 22:50:37.000000000","message":"+1.  The logic is reversed here.","commit_id":"faba4775c6adcc589b2b45df9e40ec48d1de1ac1"}]}
