)]}'
{"oslo_concurrency/processutils.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"92f2692e792208da0adf4b95673d3d9703c5cc95","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    cmd \u003d [str(c) for c in cmd]"},{"line_number":185,"context_line":"    sanitized_cmd \u003d strutils.mask_password(\u0027 \u0027.join(cmd))"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":188,"context_line":"        preexec_fn \u003d None"},{"line_number":189,"context_line":"        close_fds \u003d False"},{"line_number":190,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a930d6b_9601803a","line":187,"updated":"2015-01-25 00:43:42.000000000","message":"just to be clear, this change is unrelated to the new capability.\n\nI just realized that it isn\u0027t likely that os.name would change from one iteration of the loop below, to the next.","commit_id":"2ed872f0cc0bc487a7bd56920d3927140636da7b"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"bad19f25b85339323122e1c72c606352d356b28b","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    pipeline \u003d []"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":310,"context_line":"        preexec_fn \u003d None"},{"line_number":311,"context_line":"        close_fds \u003d False"},{"line_number":312,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa81d914_f7d06055","line":309,"updated":"2015-01-28 16:58:32.000000000","message":"Since this is duplicated above, can we refactor it out into a function?","commit_id":"477ad12b55eeccfb6cbeb7d29c3edcecabe129fd"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"dab75f9e21de0a1b4f67cd51d25cd35ebe04901c","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    pipeline \u003d []"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":310,"context_line":"        preexec_fn \u003d None"},{"line_number":311,"context_line":"        close_fds \u003d False"},{"line_number":312,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa81d914_ccce5bb4","line":309,"in_reply_to":"fa81d914_f7d06055","updated":"2015-01-28 22:52:24.000000000","message":"yes","commit_id":"477ad12b55eeccfb6cbeb7d29c3edcecabe129fd"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"bad19f25b85339323122e1c72c606352d356b28b","unresolved":false,"context_lines":[{"line_number":356,"context_line":"                                close_fds\u003dclose_fds)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        # store this for later use and also to help with debugging"},{"line_number":359,"context_line":"        p \u003d {\"ix\": ix, \"cmd\": c, \"stdin_r\": stdin_r, \"stdin_w\": stdin_w,"},{"line_number":360,"context_line":"             \"stdout_r\": stdout_r, \"stdout_w\": stdout_w, \"process\": proc}"},{"line_number":361,"context_line":"        pipeline.append(p)"},{"line_number":362,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa81d914_3ade5f40","line":359,"updated":"2015-01-28 16:58:32.000000000","message":"My initial reaction is that this seems like something that should be a class, which could then encapsulate some of the functionality currently in this method.\n\nAs a related but more general comment, this is one long function that seems to have a number of separate parts.  Splitting it up into some smaller functions with descriptive names would make it easier to follow.","commit_id":"477ad12b55eeccfb6cbeb7d29c3edcecabe129fd"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"dab75f9e21de0a1b4f67cd51d25cd35ebe04901c","unresolved":false,"context_lines":[{"line_number":356,"context_line":"                                close_fds\u003dclose_fds)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        # store this for later use and also to help with debugging"},{"line_number":359,"context_line":"        p \u003d {\"ix\": ix, \"cmd\": c, \"stdin_r\": stdin_r, \"stdin_w\": stdin_w,"},{"line_number":360,"context_line":"             \"stdout_r\": stdout_r, \"stdout_w\": stdout_w, \"process\": proc}"},{"line_number":361,"context_line":"        pipeline.append(p)"},{"line_number":362,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa81d914_6c380fa1","line":359,"in_reply_to":"fa81d914_3ade5f40","updated":"2015-01-28 22:52:24.000000000","message":"let me look into that. sounds like yes.","commit_id":"477ad12b55eeccfb6cbeb7d29c3edcecabe129fd"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"bad19f25b85339323122e1c72c606352d356b28b","unresolved":false,"context_lines":[{"line_number":511,"context_line":"    sanitized_stdout \u003d strutils.mask_password(out.decode(\u0027utf-8\u0027))"},{"line_number":512,"context_line":"    sanitized_stderr \u003d strutils.mask_password(err.decode(\u0027utf-8\u0027))"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"    return (sanitized_stdout, sanitized_stderr, returncode)"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"def trycmd(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa81d914_171894d2","line":514,"updated":"2015-01-28 16:58:32.000000000","message":"We don\u0027t want to sanitize the return values.  The code calling us is presumably trusted to see the output from whatever command it\u0027s asking us to run.  The only time we need to sanitize is if we\u0027re logging something directly ourselves.","commit_id":"477ad12b55eeccfb6cbeb7d29c3edcecabe129fd"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"dab75f9e21de0a1b4f67cd51d25cd35ebe04901c","unresolved":false,"context_lines":[{"line_number":511,"context_line":"    sanitized_stdout \u003d strutils.mask_password(out.decode(\u0027utf-8\u0027))"},{"line_number":512,"context_line":"    sanitized_stderr \u003d strutils.mask_password(err.decode(\u0027utf-8\u0027))"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"    return (sanitized_stdout, sanitized_stderr, returncode)"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"def trycmd(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa81d914_0c47931e","line":514,"in_reply_to":"fa81d914_171894d2","updated":"2015-01-28 22:52:24.000000000","message":"yes, will change this.","commit_id":"477ad12b55eeccfb6cbeb7d29c3edcecabe129fd"}]}
