)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"381386f6a80586fdea312b95e2b5a037b0835f01","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-10-08 02:58:24 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add a simple test for Allowed Address Pairs"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I267a5e335852d5fa1c93cf119a9dad1d645c458c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a2fa921_8419247c","line":8,"updated":"2015-10-12 11:22:37.000000000","message":"Can you please ad more verbose commit message? Some test scenario details and required imact on the current code base can be helpful","commit_id":"66ff9bfd1d562517ebca824179f66cdb9807c886"},{"author":{"_account_id":16986,"name":"Shuquan Huang","email":"shuquan.huang@live.com","username":"shuquan"},"change_message_id":"2f08c39f135b779cd942c333b2ef1d950be3e3e2","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-10-08 02:58:24 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add a simple test for Allowed Address Pairs"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I267a5e335852d5fa1c93cf119a9dad1d645c458c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a2fa921_edb23b06","line":8,"in_reply_to":"7a2fa921_8419247c","updated":"2015-10-12 12:59:38.000000000","message":"Better to explain it in the commit message.","commit_id":"66ff9bfd1d562517ebca824179f66cdb9807c886"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"f1e567d1c7a3d9fc9dabb87919a48bf876d72b48","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-10-08 02:58:24 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add a simple test for Allowed Address Pairs"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I267a5e335852d5fa1c93cf119a9dad1d645c458c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a2fa921_fca96f25","line":8,"in_reply_to":"7a2fa921_8419247c","updated":"2015-10-13 03:30:21.000000000","message":"Done","commit_id":"66ff9bfd1d562517ebca824179f66cdb9807c886"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"f1e567d1c7a3d9fc9dabb87919a48bf876d72b48","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-10-08 02:58:24 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add a simple test for Allowed Address Pairs"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I267a5e335852d5fa1c93cf119a9dad1d645c458c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a2fa921_5cad0330","line":8,"in_reply_to":"7a2fa921_edb23b06","updated":"2015-10-13 03:30:21.000000000","message":"Done","commit_id":"66ff9bfd1d562517ebca824179f66cdb9807c886"}],"tempest/common/utils/linux/remote_client.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"e80fd7c8054b214c79866eaf167cef20a8cf3ee4","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        cmd \u003d \u0027sudo sh -c \"echo \\\\\"%s\\\\\" \u003e/dev/console\"\u0027 % message"},{"line_number":94,"context_line":"        return self.exec_command(cmd)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def add_address(self, new_addr, dev\u003d\u0027eth0\u0027):"},{"line_number":97,"context_line":"        cmd \u003d \u0027sudo ip addr add {0} dev {1}\u0027.format(new_addr, dev)"},{"line_number":98,"context_line":"        return self.exec_command(cmd)"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_1363cd1b","line":96,"updated":"2015-10-05 06:58:13.000000000","message":"maybe add_device_address is more self explanatory name","commit_id":"0a1ccd4b2a6deecfb34c1e7d23a5c43f87f7c8b4"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"2547c0f3432aff168c616a6beb7323c9d9cef0aa","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        cmd \u003d \u0027sudo sh -c \"echo \\\\\"%s\\\\\" \u003e/dev/console\"\u0027 % message"},{"line_number":94,"context_line":"        return self.exec_command(cmd)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def add_address(self, new_addr, dev\u003d\u0027eth0\u0027):"},{"line_number":97,"context_line":"        cmd \u003d \u0027sudo ip addr add {0} dev {1}\u0027.format(new_addr, dev)"},{"line_number":98,"context_line":"        return self.exec_command(cmd)"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_6a6483e4","line":96,"in_reply_to":"9a1a9d01_1363cd1b","updated":"2015-10-06 03:39:43.000000000","message":"Done","commit_id":"0a1ccd4b2a6deecfb34c1e7d23a5c43f87f7c8b4"}],"tempest/scenario/manager.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"e80fd7c8054b214c79866eaf167cef20a8cf3ee4","unresolved":false,"context_lines":[{"line_number":811,"context_line":"        \"\"\""},{"line_number":812,"context_line":"        add an IP address to eth0 on the given server"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"        :param source: RemoteClient: an ssh connection to the server that"},{"line_number":815,"context_line":"        will get the new address"},{"line_number":816,"context_line":"        :param new_addr: the address to add"},{"line_number":817,"context_line":"        :returns: true if the command succeeded, false otherwise"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_d36c750a","line":814,"updated":"2015-10-05 06:58:13.000000000","message":"no source parameter in this method","commit_id":"0a1ccd4b2a6deecfb34c1e7d23a5c43f87f7c8b4"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"2547c0f3432aff168c616a6beb7323c9d9cef0aa","unresolved":false,"context_lines":[{"line_number":811,"context_line":"        \"\"\""},{"line_number":812,"context_line":"        add an IP address to eth0 on the given server"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"        :param source: RemoteClient: an ssh connection to the server that"},{"line_number":815,"context_line":"        will get the new address"},{"line_number":816,"context_line":"        :param new_addr: the address to add"},{"line_number":817,"context_line":"        :returns: true if the command succeeded, false otherwise"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_ca9b4fc8","line":814,"in_reply_to":"9a1a9d01_d36c750a","updated":"2015-10-06 03:39:43.000000000","message":"fixed.","commit_id":"0a1ccd4b2a6deecfb34c1e7d23a5c43f87f7c8b4"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"5262e8bd1108b029f5c78ac31debf4193606b09a","unresolved":false,"context_lines":[{"line_number":854,"context_line":"        return tempest.test.call_until_true(add_address, 1, 1)"},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"    def _check_remote_connectivity(self, source, dest, source_addr\u003dNone,"},{"line_number":857,"context_line":"                                   should_succeed\u003dTrue):"},{"line_number":858,"context_line":"        \"\"\""},{"line_number":859,"context_line":"        check ping server via source ssh connection"},{"line_number":860,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a1a9d01_6f7335e8","line":857,"updated":"2015-10-05 07:05:24.000000000","message":"add the new optional argument as the last one,\nor update the existing callers.","commit_id":"f2aa25d89f9a94befcfa00fd928bd3ea3bf7ef11"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"73db23ccb9559882f7a1b30f49cc2ddda903c65f","unresolved":false,"context_lines":[{"line_number":854,"context_line":"        return tempest.test.call_until_true(add_address, 1, 1)"},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"    def _check_remote_connectivity(self, source, dest, source_addr\u003dNone,"},{"line_number":857,"context_line":"                                   should_succeed\u003dTrue):"},{"line_number":858,"context_line":"        \"\"\""},{"line_number":859,"context_line":"        check ping server via source ssh connection"},{"line_number":860,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a1a9d01_2a476b4c","line":857,"in_reply_to":"9a1a9d01_6f7335e8","updated":"2015-10-06 03:39:50.000000000","message":"Done","commit_id":"f2aa25d89f9a94befcfa00fd928bd3ea3bf7ef11"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"293ec535b6376b5787ffda4ea673792545fe20b5","unresolved":false,"context_lines":[{"line_number":825,"context_line":"                         % (new_addr, server.ssh_client.host))"},{"line_number":826,"context_line":"                return False"},{"line_number":827,"context_line":"            return True"},{"line_number":828,"context_line":"        return tempest.test.call_until_true(add_address, 1, 1)"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"    def _check_remote_connectivity(self, source, dest, should_succeed\u003dTrue,"},{"line_number":831,"context_line":"                                   source_addr\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_55cc0d35","line":828,"updated":"2015-10-06 06:20:51.000000000","message":"i think it\u0027s expected to specify \"duration\" larger than \"sleep_for\".","commit_id":"3116420d8971af68bb9f50e3ef129da59e68a69a"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"3a3be70f8eb4f314067613823d8d1b144b87e2be","unresolved":false,"context_lines":[{"line_number":825,"context_line":"                         % (new_addr, server.ssh_client.host))"},{"line_number":826,"context_line":"                return False"},{"line_number":827,"context_line":"            return True"},{"line_number":828,"context_line":"        return tempest.test.call_until_true(add_address, 1, 1)"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"    def _check_remote_connectivity(self, source, dest, should_succeed\u003dTrue,"},{"line_number":831,"context_line":"                                   source_addr\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_4ef3170b","line":828,"in_reply_to":"7a2fa921_55cc0d35","updated":"2015-10-06 08:56:31.000000000","message":"Done","commit_id":"3116420d8971af68bb9f50e3ef129da59e68a69a"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"898df7d536c8f4aade931d42ab9f5f5919c8de03","unresolved":false,"context_lines":[{"line_number":825,"context_line":"                         % (new_addr, server.ssh_client.host))"},{"line_number":826,"context_line":"                return False"},{"line_number":827,"context_line":"            return True"},{"line_number":828,"context_line":"        return tempest.test.call_until_true(add_address, 2, 1)"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"    def _check_remote_connectivity(self, source, dest, should_succeed\u003dTrue,"},{"line_number":831,"context_line":"                                   source_addr\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_0c52c4dd","line":828,"updated":"2015-10-07 14:45:12.000000000","message":"Why do you need to wrap that in a \"call_until_true\" wrapper ?","commit_id":"d271ac0988524913183b4bcc99b6e1f6133a74ba"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"803998d366c3d0426396774c5407fbf2c3fb18ab","unresolved":false,"context_lines":[{"line_number":825,"context_line":"                         % (new_addr, server.ssh_client.host))"},{"line_number":826,"context_line":"                return False"},{"line_number":827,"context_line":"            return True"},{"line_number":828,"context_line":"        return tempest.test.call_until_true(add_address, 2, 1)"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"    def _check_remote_connectivity(self, source, dest, should_succeed\u003dTrue,"},{"line_number":831,"context_line":"                                   source_addr\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_b59ada6c","line":828,"in_reply_to":"7a2fa921_0c52c4dd","updated":"2015-10-08 02:59:13.000000000","message":"good point. It is not needed. In fact this function doesn\u0027t need to return a boolean at all.","commit_id":"d271ac0988524913183b4bcc99b6e1f6133a74ba"}],"tempest/scenario/test_security_groups_basic_ops.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"293ec535b6376b5787ffda4ea673792545fe20b5","unresolved":false,"context_lines":[{"line_number":630,"context_line":"        ssh_in \u003d dict(protocol\u003d\u0027tcp\u0027, port_range_min\u003d22, port_range_max\u003d22,"},{"line_number":631,"context_line":"                      direction\u003d\u0027ingress\u0027)"},{"line_number":632,"context_line":"        ssh_eg \u003d dict(protocol\u003d\u0027tcp\u0027, port_range_min\u003d22, port_range_max\u003d22,"},{"line_number":633,"context_line":"                      direction\u003d\u0027egress\u0027)"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"        def add_rule(rule):"},{"line_number":636,"context_line":"            self._create_security_group_rule("}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_d5ad7d32","line":633,"updated":"2015-10-06 06:20:51.000000000","message":"is this egress rule necessary?","commit_id":"3116420d8971af68bb9f50e3ef129da59e68a69a"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"3a3be70f8eb4f314067613823d8d1b144b87e2be","unresolved":false,"context_lines":[{"line_number":630,"context_line":"        ssh_in \u003d dict(protocol\u003d\u0027tcp\u0027, port_range_min\u003d22, port_range_max\u003d22,"},{"line_number":631,"context_line":"                      direction\u003d\u0027ingress\u0027)"},{"line_number":632,"context_line":"        ssh_eg \u003d dict(protocol\u003d\u0027tcp\u0027, port_range_min\u003d22, port_range_max\u003d22,"},{"line_number":633,"context_line":"                      direction\u003d\u0027egress\u0027)"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"        def add_rule(rule):"},{"line_number":636,"context_line":"            self._create_security_group_rule("}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_0e699fbe","line":633,"in_reply_to":"7a2fa921_d5ad7d32","updated":"2015-10-06 08:56:31.000000000","message":"no, removed.","commit_id":"3116420d8971af68bb9f50e3ef129da59e68a69a"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"293ec535b6376b5787ffda4ea673792545fe20b5","unresolved":false,"context_lines":[{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        dest_addr \u003d self._get_server_ip(destination)"},{"line_number":674,"context_line":"        first_addr \u003d self._get_server_ip(source)"},{"line_number":675,"context_line":"        second_addr \u003d get_incr_ip(dest_addr)"},{"line_number":676,"context_line":"        mac \u003d self._get_server_mac(source)"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_15a45555","line":675,"updated":"2015-10-06 06:20:51.000000000","message":"this seems dangerous.\n\nhow about creating an extra port and use its address?","commit_id":"3116420d8971af68bb9f50e3ef129da59e68a69a"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"3a3be70f8eb4f314067613823d8d1b144b87e2be","unresolved":false,"context_lines":[{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        dest_addr \u003d self._get_server_ip(destination)"},{"line_number":674,"context_line":"        first_addr \u003d self._get_server_ip(source)"},{"line_number":675,"context_line":"        second_addr \u003d get_incr_ip(dest_addr)"},{"line_number":676,"context_line":"        mac \u003d self._get_server_mac(source)"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_ae798b95","line":675,"in_reply_to":"7a2fa921_15a45555","updated":"2015-10-06 08:56:31.000000000","message":"Done","commit_id":"3116420d8971af68bb9f50e3ef129da59e68a69a"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"b39eaa6a3814243a6bcdf18a0023d51561b53728","unresolved":false,"context_lines":[{"line_number":674,"context_line":""},{"line_number":675,"context_line":"            self._add_address(source_ssh, second_addr)"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"            # Only the assigned IP should work."},{"line_number":678,"context_line":"            self._check_connectivity(source_ssh, dest_addr,"},{"line_number":679,"context_line":"                                     source_addr\u003dsecond_addr,"},{"line_number":680,"context_line":"                                     should_succeed\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a2fa921_6697b3ec","line":677,"updated":"2015-10-08 07:33:31.000000000","message":"is there any reason to try addresses in the different order (second and then first) only for this case?","commit_id":"66ff9bfd1d562517ebca824179f66cdb9807c886"},{"author":{"_account_id":8837,"name":"Joe Mills","email":"joe.h.mills@gmail.com","username":"joemido"},"change_message_id":"99400b9d04cc806f613eff8bf7893acd6267c39c","unresolved":false,"context_lines":[{"line_number":674,"context_line":""},{"line_number":675,"context_line":"            self._add_address(source_ssh, second_addr)"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"            # Only the assigned IP should work."},{"line_number":678,"context_line":"            self._check_connectivity(source_ssh, dest_addr,"},{"line_number":679,"context_line":"                                     source_addr\u003dsecond_addr,"},{"line_number":680,"context_line":"                                     should_succeed\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a2fa921_a6562b28","line":677,"in_reply_to":"7a2fa921_6697b3ec","updated":"2015-10-08 07:36:44.000000000","message":"No reason.","commit_id":"66ff9bfd1d562517ebca824179f66cdb9807c886"}]}
