)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e6f68f8c4f957f118c0fd5b80e5a9541c9085454","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow secure user password update."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch allows the ability for user password to be updated via a command prompt so the password doesnt show up in the bash history. The prompted password is asked twice to verify the match. If user cntl-D\u0027s the prompt a message appears suggesting user to use either of the options to update the password."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I4271ae569b922f33c34f9b015a7ee6f760414e39"},{"line_number":12,"context_line":"Fixes: bug#938315"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAOn%2F%2FWTA%3D","line":9,"updated":"2013-05-14 00:39:00.000000000","message":"commit message lines shouldn\u0027t be longer than about 72 characters, see https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_GIT_commit_message_structure","commit_id":"9fd0bf6f097743a9906cd5dee2d94b8166fd9654"}],"keystoneclient/utils.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e7c4218f8c0f153b9d6ed03be557046692057285","unresolved":false,"context_lines":[{"line_number":137,"context_line":"     Prompt user for password if not provided so the password"},{"line_number":138,"context_line":"     doesn\u0027t show up in the bash history."},{"line_number":139,"context_line":"    \"\"\""},{"line_number":140,"context_line":"    if hasattr(sys.stdin, \u0027isatty\u0027) and sys.stdin.isatty():"},{"line_number":141,"context_line":"        new_passwd \u003d None"},{"line_number":142,"context_line":"        while new_passwd is None:"},{"line_number":143,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F%2FSM%3D","line":140,"updated":"2013-05-17 00:23:10.000000000","message":"suggest use not() and then return right away. As a reviewer, I don\u0027t want to have to go to the end of the function to discover there\u0027s no else clause.","commit_id":"840ef324b716949f4486e9537f6217a3574e3a3a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e7c4218f8c0f153b9d6ed03be557046692057285","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    \"\"\""},{"line_number":140,"context_line":"    if hasattr(sys.stdin, \u0027isatty\u0027) and sys.stdin.isatty():"},{"line_number":141,"context_line":"        new_passwd \u003d None"},{"line_number":142,"context_line":"        while new_passwd is None:"},{"line_number":143,"context_line":"            try:"},{"line_number":144,"context_line":"                new_passwd \u003d getpass.getpass(\u0027New Password: \u0027)"},{"line_number":145,"context_line":"                rep_passwd \u003d getpass.getpass(\u0027Repeat New Password: \u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F%2FSo%3D","line":142,"updated":"2013-05-17 00:23:10.000000000","message":"should just while True here, since returns when new_password \u003d\u003d rep_passwd.","commit_id":"840ef324b716949f4486e9537f6217a3574e3a3a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e7c4218f8c0f153b9d6ed03be557046692057285","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                rep_passwd \u003d getpass.getpass(\u0027Repeat New Password: \u0027)"},{"line_number":146,"context_line":"                if new_passwd \u003d\u003d rep_passwd:"},{"line_number":147,"context_line":"                    return new_passwd"},{"line_number":148,"context_line":"                else:"},{"line_number":149,"context_line":"                    new_passwd \u003d None"},{"line_number":150,"context_line":"                    print \"Passwords don\u0027t match; retry\""},{"line_number":151,"context_line":"            except EOFError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F%2FSk%3D","line":148,"updated":"2013-05-17 00:23:10.000000000","message":"remove else since returned.","commit_id":"840ef324b716949f4486e9537f6217a3574e3a3a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e7c4218f8c0f153b9d6ed03be557046692057285","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                if new_passwd \u003d\u003d rep_passwd:"},{"line_number":147,"context_line":"                    return new_passwd"},{"line_number":148,"context_line":"                else:"},{"line_number":149,"context_line":"                    new_passwd \u003d None"},{"line_number":150,"context_line":"                    print \"Passwords don\u0027t match; retry\""},{"line_number":151,"context_line":"            except EOFError:"},{"line_number":152,"context_line":"                msg \u003d (\"\\nPlease specify password using the --pass option, \""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F%2FSg%3D","line":149,"updated":"2013-05-17 00:23:10.000000000","message":"don\u0027t have to set new_passwd if not checking at 142.","commit_id":"840ef324b716949f4486e9537f6217a3574e3a3a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e7c4218f8c0f153b9d6ed03be557046692057285","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                    new_passwd \u003d None"},{"line_number":150,"context_line":"                    print \"Passwords don\u0027t match; retry\""},{"line_number":151,"context_line":"            except EOFError:"},{"line_number":152,"context_line":"                msg \u003d (\"\\nPlease specify password using the --pass option, \""},{"line_number":153,"context_line":"                       \"or using the prompt\")"},{"line_number":154,"context_line":"                raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F%2FSY%3D","line":152,"updated":"2013-05-17 00:23:10.000000000","message":"remove the last comma.","commit_id":"840ef324b716949f4486e9537f6217a3574e3a3a"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"631fa797b3f2b2005067c3e7d3cdbc9f2043f277","unresolved":false,"context_lines":[{"line_number":1,"context_line":"import sys"},{"line_number":2,"context_line":"import uuid"},{"line_number":3,"context_line":"import getpass"},{"line_number":4,"context_line":"import hashlib"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"import prettytable"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F56A%3D","line":4,"updated":"2013-05-20 16:50:25.000000000","message":"import order","commit_id":"b49b01f693a0b27410eced734c0e7ac158bd2d6d"}],"keystoneclient/v2_0/shell.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e6f68f8c4f957f118c0fd5b80e5a9541c9085454","unresolved":false,"context_lines":[{"line_number":110,"context_line":"def do_user_password_update(kc, args):"},{"line_number":111,"context_line":"    \"\"\"Update user password\"\"\""},{"line_number":112,"context_line":"    user \u003d utils.find_resource(kc.users, args.user)"},{"line_number":113,"context_line":"    # prompt user for password, so it doesnt appear in bash history"},{"line_number":114,"context_line":"    new_passwd \u003d args.passwd"},{"line_number":115,"context_line":"    while new_passwd is None:"},{"line_number":116,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FWSg%3D","line":113,"updated":"2013-05-14 00:39:00.000000000","message":"(typo) change \"doesnt\"  to \"doesn\u0027t\"","commit_id":"9fd0bf6f097743a9906cd5dee2d94b8166fd9654"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e6f68f8c4f957f118c0fd5b80e5a9541c9085454","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    user \u003d utils.find_resource(kc.users, args.user)"},{"line_number":113,"context_line":"    # prompt user for password, so it doesnt appear in bash history"},{"line_number":114,"context_line":"    new_passwd \u003d args.passwd"},{"line_number":115,"context_line":"    while new_passwd is None:"},{"line_number":116,"context_line":"        try:"},{"line_number":117,"context_line":"            passwd \u003d getpass.getpass(\u0027New Password: \u0027)"},{"line_number":118,"context_line":"            rep_passwd \u003d getpass.getpass(\u0027Repeat New Password: \u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FWSc%3D","line":115,"updated":"2013-05-14 00:39:00.000000000","message":"Suggest moving this into a function \"prompt_for_password\". If you need to comment a section of code, why not just move it into a function and give it a useful name instead?","commit_id":"9fd0bf6f097743a9906cd5dee2d94b8166fd9654"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e6f68f8c4f957f118c0fd5b80e5a9541c9085454","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            else:"},{"line_number":122,"context_line":"                print \"Passwords don\u0027t match; retry\""},{"line_number":123,"context_line":"        except EOFError:"},{"line_number":124,"context_line":"            print \"\\nPlease specify password using the --pass option, \"\\"},{"line_number":125,"context_line":"                  \" or using the prompt\""},{"line_number":126,"context_line":"            return"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FWSM%3D","line":124,"updated":"2013-05-14 00:39:00.000000000","message":"Long lines should be continued with () rather than \\, see https://github.com/openstack/keystone/blame/master/HACKING.rst#L14","commit_id":"9fd0bf6f097743a9906cd5dee2d94b8166fd9654"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e6f68f8c4f957f118c0fd5b80e5a9541c9085454","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                print \"Passwords don\u0027t match; retry\""},{"line_number":123,"context_line":"        except EOFError:"},{"line_number":124,"context_line":"            print \"\\nPlease specify password using the --pass option, \"\\"},{"line_number":125,"context_line":"                  \" or using the prompt\""},{"line_number":126,"context_line":"            return"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    kc.users.update_password(user, new_passwd)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FWSE%3D","line":125,"updated":"2013-05-14 00:39:00.000000000","message":"there\u0027s an extra space here.","commit_id":"9fd0bf6f097743a9906cd5dee2d94b8166fd9654"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e6f68f8c4f957f118c0fd5b80e5a9541c9085454","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        except EOFError:"},{"line_number":124,"context_line":"            print \"\\nPlease specify password using the --pass option, \"\\"},{"line_number":125,"context_line":"                  \" or using the prompt\""},{"line_number":126,"context_line":"            return"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    kc.users.update_password(user, new_passwd)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FWSA%3D","line":126,"updated":"2013-05-14 00:39:00.000000000","message":"seems like the keystone command should exit with non-zero exit status if it didn\u0027t update the password because nothing to read. So maybe should re-raise rather than return normally?","commit_id":"9fd0bf6f097743a9906cd5dee2d94b8166fd9654"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"631fa797b3f2b2005067c3e7d3cdbc9f2043f277","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    if new_passwd is None:"},{"line_number":115,"context_line":"        msg \u003d (\"\\nPlease specify password using the --pass option \""},{"line_number":116,"context_line":"               \"or using the prompt\")"},{"line_number":117,"context_line":"        raise Exception(msg)"},{"line_number":118,"context_line":"    kc.users.update_password(user, new_passwd)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F55c%3D","line":117,"updated":"2013-05-20 16:50:25.000000000","message":"ideally we could raise exceptions, but for consistency with existing code, just use print \u0026 return","commit_id":"b49b01f693a0b27410eced734c0e7ac158bd2d6d"}]}
