)]}'
{"neutron/agent/linux/async_process.py":[{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"58e90aac6e25a0bae50e48ef49635a7af6957a00","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    pass"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class AsyncProcess(object):"},{"line_number":37,"context_line":"    \"\"\"Manages an asynchronous process."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    This class spawns a new process via subprocess and uses"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_4e50202d","line":36,"range":{"start_line":36,"start_character":6,"end_line":36,"end_character":18},"updated":"2018-07-16 18:23:41.000000000","message":"So after this change, this class is compatible with both Linux and Windows? If yes, should this class be moved to neutron/agent/common as well? If it is future work, sure.","commit_id":"84dc11603c432bd101cda773c1e57a1162bdbb42"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"e158fff1beb2e6c4bc9892b63d6b22485d58d8fb","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    pass"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class AsyncProcess(object):"},{"line_number":37,"context_line":"    \"\"\"Manages an asynchronous process."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    This class spawns a new process via subprocess and uses"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_2e27d6ca","line":36,"range":{"start_line":36,"start_character":6,"end_line":36,"end_character":18},"in_reply_to":"5f7c97a3_4e50202d","updated":"2018-07-17 07:55:30.000000000","message":"Good point, this will work on both platforms indeed. Still, I think it would be better if I send a separate patch that moves this module along with ovsdb_monitor.py so that this one is easier to review/merge (we\u0027d end up having too many changed files for a single patch).","commit_id":"84dc11603c432bd101cda773c1e57a1162bdbb42"}],"neutron/agent/windows/utils.py":[{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"d1df2d9ba567dc24e83fe23924473ca5299051bf","unresolved":false,"context_lines":[{"line_number":126,"context_line":"def process_is_running(pid):"},{"line_number":127,"context_line":"    \"\"\"Find if the given PID is running in the system.\"\"\""},{"line_number":128,"context_line":"    if pid:"},{"line_number":129,"context_line":"        output \u003d execute([\u0027cmd\u0027, \u0027/S\u0027, \u0027/C\u0027, \u0027tasklist | findstr %s\u0027 % pid],"},{"line_number":130,"context_line":"                         check_exit_code\u003dFalse, log_fail_as_error\u003dFalse)"},{"line_number":131,"context_line":"        return output !\u003d \"\""},{"line_number":132,"context_line":"    return False"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_83af01df","line":129,"updated":"2018-07-16 07:48:53.000000000","message":"This isn\u0027t reliable, as shown here: http://paste.openstack.org/raw/725982/\n\nIt will match any pid that includes the one that you\u0027re looking for. We should either improve the search expression, or avoid exec calls completely.\n\nThis is only needed by async_process.py, we already have the process object returned by subprocess.Popen, we can just call its kill method.","commit_id":"8302e9458af808058394cd3e426689a7ccc001c7"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"58e90aac6e25a0bae50e48ef49635a7af6957a00","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    return None"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def kill_process(pid, signal, run_as_root\u003dFalse):"},{"line_number":76,"context_line":"    \"\"\"Kill the process with the given pid using the given signal.\"\"\""},{"line_number":77,"context_line":"    process \u003d _get_wmi_process(pid)"},{"line_number":78,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_8e04f81a","line":75,"range":{"start_line":75,"start_character":4,"end_line":75,"end_character":16},"updated":"2018-07-16 18:23:41.000000000","message":"Better to have unit test coverage for these newly added methods.","commit_id":"84dc11603c432bd101cda773c1e57a1162bdbb42"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"e158fff1beb2e6c4bc9892b63d6b22485d58d8fb","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    return None"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def kill_process(pid, signal, run_as_root\u003dFalse):"},{"line_number":76,"context_line":"    \"\"\"Kill the process with the given pid using the given signal.\"\"\""},{"line_number":77,"context_line":"    process \u003d _get_wmi_process(pid)"},{"line_number":78,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_11647f48","line":75,"range":{"start_line":75,"start_character":4,"end_line":75,"end_character":16},"in_reply_to":"5f7c97a3_8e04f81a","updated":"2018-07-17 07:55:30.000000000","message":"Sure, adding some unit tests right away.","commit_id":"84dc11603c432bd101cda773c1e57a1162bdbb42"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9613633c1bf95449c8f80f01b0f42280ba4bcc6a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from neutron._i18n import _"},{"line_number":27,"context_line":"from neutron.common import exceptions"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":30,"context_line":"    import wmi"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_e1a9cddd","line":29,"updated":"2018-07-30 14:51:37.000000000","message":"this module is whole related to Windows IIUC so do You really need this \"if\" here?","commit_id":"fee630efaa74ce3d193999944e5b3a331fb2fbd9"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"902839505480ac849e6264c1d85838abdc65475f","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from neutron._i18n import _"},{"line_number":27,"context_line":"from neutron.common import exceptions"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":30,"context_line":"    import wmi"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_810579c3","line":29,"in_reply_to":"5f7c97a3_e1a9cddd","updated":"2018-07-30 14:57:33.000000000","message":"\u0027wmi\u0027 may not be present or even importable on other platforms, yet we want unit tests to run on Linux.","commit_id":"fee630efaa74ce3d193999944e5b3a331fb2fbd9"}]}
