)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fadc3dd1d0b67968e44410a728b36ba4f8dc3b66","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Alex Kang \u003cakang@vmware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-27 20:26:34 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"arg with_prologue to programmatically change shell_prologue value"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-Bug: 1530177"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a5de9d1_db7eede3","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":3},"updated":"2016-01-28 05:36:47.000000000","message":"To explain the patch clearly, how about\n\n Add with_prologue to exec_command()\n\n?","commit_id":"23214d0ba5f49c9148812be862ef79ac3fa4ae0b"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"58edcb9e4aa359441f0cc91477c73c089efae6d0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Alex Kang \u003cakang@vmware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-27 20:26:34 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"arg with_prologue to programmatically change shell_prologue value"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-Bug: 1530177"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a5de9d1_3e260fcf","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":3},"in_reply_to":"7a5de9d1_db7eede3","updated":"2016-01-28 06:39:32.000000000","message":"resolved","commit_id":"23214d0ba5f49c9148812be862ef79ac3fa4ae0b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fadc3dd1d0b67968e44410a728b36ba4f8dc3b66","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-Bug: 1530177"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The default \"set -o pipefail\" casuing netcat/nc to fail."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"config validation.ssh_shell_prologue provide the first level to define"},{"line_number":14,"context_line":"its initial value. In general you can set its default value for all"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a5de9d1_db090d97","line":11,"range":{"start_line":11,"start_character":30,"end_line":11,"end_character":37},"updated":"2016-01-28 05:36:47.000000000","message":"s/casuing/causing/","commit_id":"23214d0ba5f49c9148812be862ef79ac3fa4ae0b"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"58edcb9e4aa359441f0cc91477c73c089efae6d0","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-Bug: 1530177"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The default \"set -o pipefail\" casuing netcat/nc to fail."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"config validation.ssh_shell_prologue provide the first level to define"},{"line_number":14,"context_line":"its initial value. In general you can set its default value for all"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a5de9d1_1e2d53a7","line":11,"range":{"start_line":11,"start_character":30,"end_line":11,"end_character":37},"in_reply_to":"7a5de9d1_db090d97","updated":"2016-01-28 06:39:32.000000000","message":"resolved","commit_id":"23214d0ba5f49c9148812be862ef79ac3fa4ae0b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fadc3dd1d0b67968e44410a728b36ba4f8dc3b66","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The default \"set -o pipefail\" casuing netcat/nc to fail."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"config validation.ssh_shell_prologue provide the first level to define"},{"line_number":14,"context_line":"its initial value. In general you can set its default value for all"},{"line_number":15,"context_line":"your tests. However, it will be nice to programmatically set its"},{"line_number":16,"context_line":"value to suit specific need without affect other tests."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a5de9d1_3bf94181","line":13,"range":{"start_line":13,"start_character":37,"end_line":13,"end_character":43},"updated":"2016-01-28 05:36:47.000000000","message":"s/provide/provides/","commit_id":"23214d0ba5f49c9148812be862ef79ac3fa4ae0b"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"58edcb9e4aa359441f0cc91477c73c089efae6d0","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The default \"set -o pipefail\" casuing netcat/nc to fail."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"config validation.ssh_shell_prologue provide the first level to define"},{"line_number":14,"context_line":"its initial value. In general you can set its default value for all"},{"line_number":15,"context_line":"your tests. However, it will be nice to programmatically set its"},{"line_number":16,"context_line":"value to suit specific need without affect other tests."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a5de9d1_de1d7b74","line":13,"range":{"start_line":13,"start_character":37,"end_line":13,"end_character":43},"in_reply_to":"7a5de9d1_3bf94181","updated":"2016-01-28 06:39:32.000000000","message":"resolved","commit_id":"23214d0ba5f49c9148812be862ef79ac3fa4ae0b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fadc3dd1d0b67968e44410a728b36ba4f8dc3b66","unresolved":false,"context_lines":[{"line_number":13,"context_line":"config validation.ssh_shell_prologue provide the first level to define"},{"line_number":14,"context_line":"its initial value. In general you can set its default value for all"},{"line_number":15,"context_line":"your tests. However, it will be nice to programmatically set its"},{"line_number":16,"context_line":"value to suit specific need without affect other tests."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This fix keeps its default behavior, and provide the mechanism to"},{"line_number":19,"context_line":"change its prologue programmatically."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a5de9d1_db302d59","line":16,"range":{"start_line":16,"start_character":36,"end_line":16,"end_character":41},"updated":"2016-01-28 05:36:47.000000000","message":"affecting","commit_id":"23214d0ba5f49c9148812be862ef79ac3fa4ae0b"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"58edcb9e4aa359441f0cc91477c73c089efae6d0","unresolved":false,"context_lines":[{"line_number":13,"context_line":"config validation.ssh_shell_prologue provide the first level to define"},{"line_number":14,"context_line":"its initial value. In general you can set its default value for all"},{"line_number":15,"context_line":"your tests. However, it will be nice to programmatically set its"},{"line_number":16,"context_line":"value to suit specific need without affect other tests."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This fix keeps its default behavior, and provide the mechanism to"},{"line_number":19,"context_line":"change its prologue programmatically."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a5de9d1_fe06371f","line":16,"range":{"start_line":16,"start_character":36,"end_line":16,"end_character":41},"in_reply_to":"7a5de9d1_db302d59","updated":"2016-01-28 06:39:32.000000000","message":"resolved","commit_id":"23214d0ba5f49c9148812be862ef79ac3fa4ae0b"}],"tempest/common/utils/linux/remote_client.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fadc3dd1d0b67968e44410a728b36ba4f8dc3b66","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if type(with_prologue) in six.types.StringTypes:"},{"line_number":55,"context_line":"            # Allow users to bypass default behavior of prefexing prologue"},{"line_number":56,"context_line":"            # and overwritting prologue programmatically."},{"line_number":57,"context_line":"            # Known issue is that the netcat program will fail"},{"line_number":58,"context_line":"            # with prologue(set -o pipefail)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_1bc24534","line":55,"range":{"start_line":55,"start_character":56,"end_line":55,"end_character":65},"updated":"2016-01-28 05:36:47.000000000","message":"s/prefex/prefix/","commit_id":"23214d0ba5f49c9148812be862ef79ac3fa4ae0b"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"58edcb9e4aa359441f0cc91477c73c089efae6d0","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if type(with_prologue) in six.types.StringTypes:"},{"line_number":55,"context_line":"            # Allow users to bypass default behavior of prefexing prologue"},{"line_number":56,"context_line":"            # and overwritting prologue programmatically."},{"line_number":57,"context_line":"            # Known issue is that the netcat program will fail"},{"line_number":58,"context_line":"            # with prologue(set -o pipefail)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_be319f0d","line":55,"range":{"start_line":55,"start_character":56,"end_line":55,"end_character":65},"in_reply_to":"7a5de9d1_1bc24534","updated":"2016-01-28 06:39:32.000000000","message":"resolved","commit_id":"23214d0ba5f49c9148812be862ef79ac3fa4ae0b"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"e3dda05f466dc59287437dce13e07945721c1b61","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                     ssh_timeout, pkey\u003dpkey,"},{"line_number":49,"context_line":"                                     channel_timeout\u003dconnect_timeout)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_a939f5d8","line":51,"updated":"2016-01-30 04:21:46.000000000","message":"I don\u0027t think that \"with\" is really needed here. What about just \"prologue\"?\nAlso what about\n\n\nif prologue is None:\n    # Allow users to bypass default behavior of prefixing prologue\n    # and overwriting prologue programmatically.\n    # Known issue is that the netcat program will fail\n    # with prologue \"set -o pipefail\".\n    prologue \u003d CONF.validation.ssh_shell_prologue\ncmd \u003d prologue + \" \" + cmd\nLOG.debug(\"Remote command: %s\" % cmd)\nreturn self.ssh_client.exec_command(cmd)","commit_id":"11a1a87124491c8c2b3b7a76d83af10d028cab40"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"f9ffa316c4d941cefda55595ca401118d35c4c89","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                     ssh_timeout, pkey\u003dpkey,"},{"line_number":49,"context_line":"                                     channel_timeout\u003dconnect_timeout)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_fa143ca0","line":51,"in_reply_to":"7a5de9d1_2237224e","updated":"2016-02-02 06:16:42.000000000","message":"with_prologue is default None to sustain its default behavior.\nwith this prologue with a string value, it will overwrite the default ssh_prologue defined by config.py or provided by user\u0027s tempest.con.","commit_id":"11a1a87124491c8c2b3b7a76d83af10d028cab40"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a4e9bf61f6694276aa209360d0d415d1e9150852","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                     ssh_timeout, pkey\u003dpkey,"},{"line_number":49,"context_line":"                                     channel_timeout\u003dconnect_timeout)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_2237224e","line":51,"in_reply_to":"7a5de9d1_a939f5d8","updated":"2016-02-01 17:38:37.000000000","message":"+1","commit_id":"11a1a87124491c8c2b3b7a76d83af10d028cab40"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a4e9bf61f6694276aa209360d0d415d1e9150852","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"},{"line_number":55,"context_line":"            # Allow users to bypass default behavior of prefixing prologue"},{"line_number":56,"context_line":"            # and overwritting prologue programmatically."},{"line_number":57,"context_line":"            # Known issue is that the netcat program will fail"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_028226c8","line":54,"updated":"2016-02-01 17:38:37.000000000","message":"Why this type check ? \n\n  if prologue is not None:\n\ndoesn\u0027t work ?","commit_id":"11a1a87124491c8c2b3b7a76d83af10d028cab40"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"f9ffa316c4d941cefda55595ca401118d35c4c89","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"},{"line_number":55,"context_line":"            # Allow users to bypass default behavior of prefixing prologue"},{"line_number":56,"context_line":"            # and overwritting prologue programmatically."},{"line_number":57,"context_line":"            # Known issue is that the netcat program will fail"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_5a71d00a","line":54,"in_reply_to":"7a5de9d1_028226c8","updated":"2016-02-02 06:16:42.000000000","message":"it will overwrite the default ssh_prologue only when its value is string or unicode","commit_id":"11a1a87124491c8c2b3b7a76d83af10d028cab40"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"e3dda05f466dc59287437dce13e07945721c1b61","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"},{"line_number":55,"context_line":"            # Allow users to bypass default behavior of prefixing prologue"},{"line_number":56,"context_line":"            # and overwritting prologue programmatically."},{"line_number":57,"context_line":"            # Known issue is that the netcat program will fail"},{"line_number":58,"context_line":"            # with prologue(set -o pipefail)"},{"line_number":59,"context_line":"            cmd \u003d with_prologue + \" \" + cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_295425fd","line":56,"range":{"start_line":56,"start_character":18,"end_line":56,"end_character":30},"updated":"2016-01-30 04:21:46.000000000","message":"overwriting","commit_id":"11a1a87124491c8c2b3b7a76d83af10d028cab40"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"f9ffa316c4d941cefda55595ca401118d35c4c89","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"},{"line_number":55,"context_line":"            # Allow users to bypass default behavior of prefixing prologue"},{"line_number":56,"context_line":"            # and overwritting prologue programmatically."},{"line_number":57,"context_line":"            # Known issue is that the netcat program will fail"},{"line_number":58,"context_line":"            # with prologue(set -o pipefail)"},{"line_number":59,"context_line":"            cmd \u003d with_prologue + \" \" + cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_da5b8084","line":56,"range":{"start_line":56,"start_character":18,"end_line":56,"end_character":30},"in_reply_to":"7a5de9d1_295425fd","updated":"2016-02-02 06:16:42.000000000","message":"Done","commit_id":"11a1a87124491c8c2b3b7a76d83af10d028cab40"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"e3dda05f466dc59287437dce13e07945721c1b61","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            # Allow users to bypass default behavior of prefixing prologue"},{"line_number":56,"context_line":"            # and overwritting prologue programmatically."},{"line_number":57,"context_line":"            # Known issue is that the netcat program will fail"},{"line_number":58,"context_line":"            # with prologue(set -o pipefail)"},{"line_number":59,"context_line":"            cmd \u003d with_prologue + \" \" + cmd"},{"line_number":60,"context_line":"        else:"},{"line_number":61,"context_line":"            cmd \u003d CONF.validation.ssh_shell_prologue + \" \" + cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_8943d941","line":58,"range":{"start_line":58,"start_character":27,"end_line":58,"end_character":44},"updated":"2016-01-30 04:21:46.000000000","message":"Why parentheses? :)","commit_id":"11a1a87124491c8c2b3b7a76d83af10d028cab40"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"f9ffa316c4d941cefda55595ca401118d35c4c89","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            # Allow users to bypass default behavior of prefixing prologue"},{"line_number":56,"context_line":"            # and overwritting prologue programmatically."},{"line_number":57,"context_line":"            # Known issue is that the netcat program will fail"},{"line_number":58,"context_line":"            # with prologue(set -o pipefail)"},{"line_number":59,"context_line":"            cmd \u003d with_prologue + \" \" + cmd"},{"line_number":60,"context_line":"        else:"},{"line_number":61,"context_line":"            cmd \u003d CONF.validation.ssh_shell_prologue + \" \" + cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_3a4df4c3","line":58,"range":{"start_line":58,"start_character":27,"end_line":58,"end_character":44},"in_reply_to":"7a5de9d1_42157e99","updated":"2016-02-02 06:16:42.000000000","message":"default value of prologue defined in config.py.\nit is the value cause nc program to tail.","commit_id":"11a1a87124491c8c2b3b7a76d83af10d028cab40"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a4e9bf61f6694276aa209360d0d415d1e9150852","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            # Allow users to bypass default behavior of prefixing prologue"},{"line_number":56,"context_line":"            # and overwritting prologue programmatically."},{"line_number":57,"context_line":"            # Known issue is that the netcat program will fail"},{"line_number":58,"context_line":"            # with prologue(set -o pipefail)"},{"line_number":59,"context_line":"            cmd \u003d with_prologue + \" \" + cmd"},{"line_number":60,"context_line":"        else:"},{"line_number":61,"context_line":"            cmd \u003d CONF.validation.ssh_shell_prologue + \" \" + cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_42157e99","line":58,"range":{"start_line":58,"start_character":27,"end_line":58,"end_character":44},"in_reply_to":"7a5de9d1_8943d941","updated":"2016-02-01 17:38:37.000000000","message":"+1","commit_id":"11a1a87124491c8c2b3b7a76d83af10d028cab40"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"bd22241dc6d4746d4b94af99101d8f66c33a577d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                     ssh_timeout, pkey\u003dpkey,"},{"line_number":49,"context_line":"                                     channel_timeout\u003dconnect_timeout)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a5de9d1_c70b752a","line":51,"updated":"2016-02-02 22:18:54.000000000","message":"Sorry, but I did\u0027t understand your explanation in patch set 7. So I repeat one more time :)\n\n\nI don\u0027t think that \"with\" is really needed here. What about just \"prologue\"?\nAlso what about\n\ndef exec_command(self, cmd, prologue\u003dNone):\n    # Shell options below add more clearness on failures,\n    # path is extended for some non-cirros guest oses (centos7)\n    if prologue is None:\n        # Allow users to bypass default behavior of prefixing prologue\n        # and overwriting prologue programmatically.\n        # Known issue is that the netcat program will fail\n        # with prologue \"set -o pipefail\".\n        prologue \u003d CONF.validation.ssh_shell_prologue\n    cmd \u003d prologue + \" \" + cmd\n    LOG.debug(\"Remote command: %s\" % cmd)\n    return self.ssh_client.exec_command(cmd)\n\n?","commit_id":"ea0399321331472d5b5b7299129025fb0a383a46"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"13d120046747299f978ddfcc369daed175c225a2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                     ssh_timeout, pkey\u003dpkey,"},{"line_number":49,"context_line":"                                     channel_timeout\u003dconnect_timeout)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_c8172f53","line":51,"in_reply_to":"7a5de9d1_253a81e8","updated":"2016-02-03 00:11:07.000000000","message":"it is better to write:\n   ssh_client.exec_command(\u0027help\u0027, with_prologue\u003d\u0027TIMEOUT\u003d300\u0027)\nto say with_proloque\u003d\u0027TIMEOUT\u003d300\u0027, replace the default shell_proloque\nnot:\n   ssh_client.exec_command(\u0027help\u0027, \u0027TIMEOUT\u003d300\u0027)","commit_id":"ea0399321331472d5b5b7299129025fb0a383a46"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"6cebca9d12e1565d0bd8da9afe919aeac7ebe6fd","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                     ssh_timeout, pkey\u003dpkey,"},{"line_number":49,"context_line":"                                     channel_timeout\u003dconnect_timeout)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a5de9d1_253a81e8","line":51,"in_reply_to":"7a5de9d1_2aeb30b2","updated":"2016-02-02 23:20:03.000000000","message":"OK. Then it could be like this\n\n\ndef exec_command(self, cmd, prologue\u003dNone):\n    # Shell options below add more clearness on failures,\n    # path is extended for some non-cirros guest oses (centos7)\n    if not isinstance(prologue, six.string_types):\n        # Allow users to bypass default behavior of prefixing prologue\n        # and overwriting prologue programmatically.\n        # Known issue is that the netcat program will fail\n        # with prologue \"set -o pipefail\".\n        prologue \u003d CONF.validation.ssh_shell_prologue\n    cmd \u003d prologue + \" \" + cmd\n    LOG.debug(\"Remote command: %s\" % cmd)\n    return self.ssh_client.exec_command(cmd)\n\n\nBtw you use \"with_prologue\" instead of just \"prologue\"? Is there a real reason for it?","commit_id":"ea0399321331472d5b5b7299129025fb0a383a46"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"cdf12ecefab84469c6a4a5a6afda2fec8c5e7bb1","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                     ssh_timeout, pkey\u003dpkey,"},{"line_number":49,"context_line":"                                     channel_timeout\u003dconnect_timeout)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a5de9d1_2aeb30b2","line":51,"in_reply_to":"7a5de9d1_c70b752a","updated":"2016-02-02 22:28:28.000000000","message":"By check prologue is None you are opened to non string/unicode to be prefixed to cmd.\nBy checking prologue as string instance (applied to python2.7 and python3.x) we are guarantee only string will be prefixed.","commit_id":"ea0399321331472d5b5b7299129025fb0a383a46"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1d98b455968359dfb128ff3228c1d7b58c0a2ebd","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"},{"line_number":55,"context_line":"            # Allow users bypassing default behavior programmatically."},{"line_number":56,"context_line":"            # If and only if with_prologue is instance of string."},{"line_number":57,"context_line":"            # Known issue is that the netcat program will fail"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_d19e8055","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":55},"updated":"2016-02-20 01:00:50.000000000","message":"We need to import six for passing all tests:\n\n 2016-02-19 18:10:16.103 | ./tempest/common/utils/linux/remote_client.py:42:38: F821 undefined name \u0027six\u0027\n 2016-02-19 18:10:16.105 |         if isinstance(with_prologue, six.string_types):","commit_id":"afa284a6c67742f7a575412a8f015f2a3d88a25f"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"f7e05d13af757b1be48e0d37c9b1097a347d6f67","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":52,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":53,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":54,"context_line":"        if isinstance(with_prologue, six.string_types):"},{"line_number":55,"context_line":"            # Allow users bypassing default behavior programmatically."},{"line_number":56,"context_line":"            # If and only if with_prologue is instance of string."},{"line_number":57,"context_line":"            # Known issue is that the netcat program will fail"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_9f2b5630","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":55},"in_reply_to":"bae84128_d19e8055","updated":"2016-02-20 14:35:01.000000000","message":"import six is at line#18\nDon\u0027t know why it failed.\nIt is pass, except Sriov. did a recheck and everything falling apart.","commit_id":"afa284a6c67742f7a575412a8f015f2a3d88a25f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b9cc6377bffdcee7e03ecf13d500da5104f06196","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                                     ssh_timeout, pkey\u003dpkey,"},{"line_number":38,"context_line":"                                     channel_timeout\u003dconnect_timeout)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":41,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":42,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":43,"context_line":"        if isinstance(with_prologue, six.string_types):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aed3d3a_83abf9d5","line":40,"updated":"2016-02-26 16:42:46.000000000","message":"We told you several times to rename that argument to \u0027prologue\u0027.","commit_id":"e7377c28bf1ffd4b6fe43d3dd5a99166ef8ca3c6"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"db12ee09321858ff6e9d72a634f986361e9eac12","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                                     ssh_timeout, pkey\u003dpkey,"},{"line_number":38,"context_line":"                                     channel_timeout\u003dconnect_timeout)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":41,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":42,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":43,"context_line":"        if isinstance(with_prologue, six.string_types):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aed3d3a_f53240f1","line":40,"in_reply_to":"9aed3d3a_72278f12","updated":"2016-02-29 01:58:23.000000000","message":"Alex, we really don\u0027t need \u0027with\u0027 prefix.","commit_id":"e7377c28bf1ffd4b6fe43d3dd5a99166ef8ca3c6"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"db4936f3f9d85c38f2e47ae07560485628907f14","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                                     ssh_timeout, pkey\u003dpkey,"},{"line_number":38,"context_line":"                                     channel_timeout\u003dconnect_timeout)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":41,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":42,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":43,"context_line":"        if isinstance(with_prologue, six.string_types):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aed3d3a_72278f12","line":40,"in_reply_to":"9aed3d3a_83abf9d5","updated":"2016-02-26 21:33:30.000000000","message":"semantic; don\u0027t you think that\nexec_command(cmd, with_prologue) is better exec_command(cmd, prologue).","commit_id":"e7377c28bf1ffd4b6fe43d3dd5a99166ef8ca3c6"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b9cc6377bffdcee7e03ecf13d500da5104f06196","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":41,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":42,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":43,"context_line":"        if isinstance(with_prologue, six.string_types):"},{"line_number":44,"context_line":"            # Allow users bypassing default behavior programmatically."},{"line_number":45,"context_line":"            # If and only if with_prologue is instance of string."},{"line_number":46,"context_line":"            # Known issue is that the netcat program will fail"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aed3d3a_03d40945","line":43,"updated":"2016-02-26 16:42:46.000000000","message":"You don\"t need that type check. This is Python, we don\"t check the type of each argument, every time. It better to fail hard with a big exception than to silently drop the \"prologue\" argument and happily move on.","commit_id":"e7377c28bf1ffd4b6fe43d3dd5a99166ef8ca3c6"},{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"db4936f3f9d85c38f2e47ae07560485628907f14","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def exec_command(self, cmd, with_prologue\u003dNone):"},{"line_number":41,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":42,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":43,"context_line":"        if isinstance(with_prologue, six.string_types):"},{"line_number":44,"context_line":"            # Allow users bypassing default behavior programmatically."},{"line_number":45,"context_line":"            # If and only if with_prologue is instance of string."},{"line_number":46,"context_line":"            # Known issue is that the netcat program will fail"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aed3d3a_150d4d37","line":43,"in_reply_to":"9aed3d3a_03d40945","updated":"2016-02-26 21:33:30.000000000","message":"I can agree on that it is the user\u0027s responsibility.","commit_id":"e7377c28bf1ffd4b6fe43d3dd5a99166ef8ca3c6"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"60c8c3a774ce75b75508e8cd051346ed0565efb6","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def exec_command(self, cmd, prologue\u003dNone):"},{"line_number":41,"context_line":"        # Shell options below add more clearness on failures,"},{"line_number":42,"context_line":"        # path is extended for some non-cirros guest oses (centos7)"},{"line_number":43,"context_line":"        if isinstance(prologue, six.string_types):"},{"line_number":44,"context_line":"            # Allow users to overwrite default behavior programmatically."},{"line_number":45,"context_line":"            # If and only if prologue is instance of string, so it accepts"},{"line_number":46,"context_line":"            # empty str/unicode which is evaluated to False."}],"source_content_type":"text/x-python","patch_set":12,"id":"5aef4532_ad566e27","line":43,"updated":"2016-03-10 03:11:40.000000000","message":"Alex, \n\n    if prologue is not None:\n        ...\n\nreally will be enough here :) Let\u0027s not make simple things complicated.","commit_id":"f8b8e004b88bf8e9a1b3f48e8377012b441ac074"}]}
