)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"82f7e4755f49a6a1747386058e59a902b347ec05","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enhanced connectivity check using multiple protocols"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is required for https://review.openstack.org/#/c/102633/"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Adds ability to select differnt connectivity checks on different"},{"line_number":12,"context_line":"protocol methods."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa98f980_9f5d1c18","line":9,"updated":"2014-09-03 05:31:13.000000000","message":"The above patch has already been abandoned. Will you restore the patch?","commit_id":"8fd88a0b84a512ad00323540db12c129c0319ee3"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"82f7e4755f49a6a1747386058e59a902b347ec05","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Adds ability to select differnt connectivity checks on different"},{"line_number":12,"context_line":"protocol methods."},{"line_number":13,"context_line":"Adds wrapprs to choose connectivty checks to run for each"},{"line_number":14,"context_line":"connectivity protocol."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Related-Bug: #1298472"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa98f980_3fe990e6","line":14,"updated":"2014-09-03 05:31:13.000000000","message":"I think it\u0027s good to add the reason why we should support multiple protocols in this commit message.","commit_id":"8fd88a0b84a512ad00323540db12c129c0319ee3"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enhanced connectivity check using multiple protocols"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is required for https://review.openstack.org/#/c/102633/"},{"line_number":10,"context_line":"With this patch we can resume working on it."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Adds ability to select differnt connectivity checks on different"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa98f980_a084a2b1","line":9,"updated":"2014-09-10 11:19:27.000000000","message":"This paragraph should come last (but before Related-Bug).","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"22469f8ba7c9b26da43e571ae347c0ea38266233","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enhanced connectivity check using multiple protocols"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is required for https://review.openstack.org/#/c/102633/"},{"line_number":10,"context_line":"With this patch we can resume working on it."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Adds ability to select differnt connectivity checks on different"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a890539_3724a1ae","line":9,"in_reply_to":"fa98f980_a084a2b1","updated":"2014-11-28 18:16:37.000000000","message":"Done","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Adds ability to select differnt connectivity checks on different"},{"line_number":13,"context_line":"protocol methods."},{"line_number":14,"context_line":"Adds wrapprs to choose connectivty checks to run for each"},{"line_number":15,"context_line":"connectivity protocol."},{"line_number":16,"context_line":"Adds the ability to implement multi-protocol isolation checks."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa98f980_60a39a4f","line":14,"updated":"2014-09-10 11:19:27.000000000","message":"nit: s/connectivty/connectivity/g","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"22469f8ba7c9b26da43e571ae347c0ea38266233","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Adds ability to select differnt connectivity checks on different"},{"line_number":13,"context_line":"protocol methods."},{"line_number":14,"context_line":"Adds wrapprs to choose connectivty checks to run for each"},{"line_number":15,"context_line":"connectivity protocol."},{"line_number":16,"context_line":"Adds the ability to implement multi-protocol isolation checks."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a890539_57384dd4","line":14,"in_reply_to":"fa98f980_60a39a4f","updated":"2014-11-28 18:16:37.000000000","message":"Done","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"792c6f6abc7f9b27cc1cab8e3097624cb2bb8b61","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Adds the ability to implement multi-protocol isolation checks."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Related-Bug: #1298472"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I85be686bae4c38b21f4e79cffbb19c5b862066b2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa98f980_c650e6d6","line":19,"updated":"2014-09-10 06:15:26.000000000","message":"Since this patch is keeping the test as it is for now (with icmp check hard-coded), please add explanation on future planned patches that would use this functionality.","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"22469f8ba7c9b26da43e571ae347c0ea38266233","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Adds the ability to implement multi-protocol isolation checks."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Related-Bug: #1298472"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I85be686bae4c38b21f4e79cffbb19c5b862066b2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a890539_12b3330b","line":19,"in_reply_to":"fa98f980_c650e6d6","updated":"2014-11-28 18:16:37.000000000","message":"Done","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"}],"tempest/common/utils/linux/remote_client.py":[{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        \"\"\""},{"line_number":119,"context_line":"        Check connectivity via traceroute. Verify that the last packet"},{"line_number":120,"context_line":"        arrives from the destination host."},{"line_number":121,"context_line":"        Limit to 15 hops in order to avoid ssh timeout"},{"line_number":122,"context_line":"        \"\"\""},{"line_number":123,"context_line":"        cmd \u003d \"traceroute -m15 {host} | tail -n1 | grep {host}\".format("},{"line_number":124,"context_line":"            host\u003dhost)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_1b3b239d","line":121,"updated":"2014-09-10 11:19:27.000000000","message":"1. I think that the function should receive the number of hops to do (ie. it should be up to the user to decide how many hops to attempt)\n\n2. I think that in order to deal with ssh timeouts, the underlying exec_command should have an option to specify timeout length, and then the actual timeout should be a function of the maximum hops allowed * 5 seconds, for example.","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        @port: by default cirrOS opens port 22 for SSH"},{"line_number":132,"context_line":"        \"\"\""},{"line_number":133,"context_line":"        cmd \u003d \"nc -w 1 {host} {port} \u003c /dev/null\".format(host\u003dhost, port\u003dport)"},{"line_number":134,"context_line":"        return self.exec_command(cmd)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def icmp_check(self, host):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_3b7d476f","line":133,"updated":"2014-09-10 11:19:27.000000000","message":"Why is there a \"\u003c\" here? Are you intentionally feeding /dev/null\u0027s stdout as stdin to this process?\n\nAlso, don\u0027t use .format (this isn\u0027t Java) - use string formatting, ie.\n\n cmd \u003d \"nc -w 1 %{host}s %{port}s\" % {\u0027host\u0027: host, \u0027port\u0027: port}.","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        cmd \u003d \"nc -w 1 {host} {port} \u003c /dev/null\".format(host\u003dhost, port\u003dport)"},{"line_number":134,"context_line":"        return self.exec_command(cmd)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def icmp_check(self, host):"},{"line_number":137,"context_line":"        \"\"\""},{"line_number":138,"context_line":"        Wrapper for icmp connectivity checks"},{"line_number":139,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_7bafcfe3","line":136,"updated":"2014-09-10 11:19:27.000000000","message":"Wouldn\u0027t it be better to just do \u0027icmp_check \u003d ping_host\u0027 in the class level?","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    def udp_check(self, host):"},{"line_number":143,"context_line":"        \"\"\""},{"line_number":144,"context_line":"        Wrapper for udp connectivity checks"},{"line_number":145,"context_line":"        \"\"\""},{"line_number":146,"context_line":"        return self.traceroute_host(host)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def tcp_check(self, host):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_9b3c73c1","line":145,"updated":"2014-09-10 11:19:27.000000000","message":"IMO, udp_check !\u003d traceroute as they are 2 different things. I think this function should receive a port (like nc_host) and check actual udp conenctivity.","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        \"\"\""},{"line_number":146,"context_line":"        return self.traceroute_host(host)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def tcp_check(self, host):"},{"line_number":149,"context_line":"        \"\"\""},{"line_number":150,"context_line":"        Wrapper for tcp connectivity checks"},{"line_number":151,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_bb6217d6","line":148,"updated":"2014-09-10 11:19:27.000000000","message":"What if I wanted to check if a host has port 23 open and not 22?\n\nThis function should be removed and replaced by nc_host.","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"240ccbf4be317de80618305bbe59db1b00813009","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        cmd \u003d \"sudo nc -p %s -l -l -e echo \u0026\" % port"},{"line_number":184,"context_line":"        return self.exec_command(cmd)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def nc_host(self, host, port\u003d80):"},{"line_number":187,"context_line":"        \"\"\""},{"line_number":188,"context_line":"        Check connectivity to tcp port at host via nc"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a961159_9c282638","line":186,"updated":"2015-01-20 14:11:56.000000000","message":"why is port 80 default?\ncirros images have only port 22 open so we can test connectivity on this without opening extra ports","commit_id":"e52bdb1d567f97fd230ea7cb457ab0f175131fc3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"7324ab5bfb7794ddf7c897d047abd333f7bb9cf5","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        cmd \u003d \"sudo nc -p %s -l -l -e echo \u0026\" % port"},{"line_number":184,"context_line":"        return self.exec_command(cmd)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def nc_host(self, host, port\u003d80):"},{"line_number":187,"context_line":"        \"\"\""},{"line_number":188,"context_line":"        Check connectivity to tcp port at host via nc"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_6559d759","line":186,"in_reply_to":"3a961159_9c282638","updated":"2015-01-23 16:12:51.000000000","message":"See the reason in test_security_groups_basic_ops.","commit_id":"e52bdb1d567f97fd230ea7cb457ab0f175131fc3"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"240ccbf4be317de80618305bbe59db1b00813009","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        \"\"\""},{"line_number":200,"context_line":"        return self.ping_host(host)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def udp_check(self, host):"},{"line_number":203,"context_line":"        \"\"\""},{"line_number":204,"context_line":"        Wrapper for udp connectivity checks"},{"line_number":205,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a961159_5c307ee9","line":202,"updated":"2015-01-20 14:11:56.000000000","message":"IMO these should have **kwargs to push down to helper functions","commit_id":"e52bdb1d567f97fd230ea7cb457ab0f175131fc3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"7324ab5bfb7794ddf7c897d047abd333f7bb9cf5","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        \"\"\""},{"line_number":200,"context_line":"        return self.ping_host(host)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def udp_check(self, host):"},{"line_number":203,"context_line":"        \"\"\""},{"line_number":204,"context_line":"        Wrapper for udp connectivity checks"},{"line_number":205,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_45213bb3","line":202,"in_reply_to":"3a961159_5c307ee9","updated":"2015-01-23 16:12:51.000000000","message":"Indeed, makes sense. Also true for tcp_check. Thanks!","commit_id":"e52bdb1d567f97fd230ea7cb457ab0f175131fc3"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"22e0ed79933bf777671f9e0bbe880291a4818a64","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        \"\"\""},{"line_number":204,"context_line":"        Wrapper for udp connectivity checks"},{"line_number":205,"context_line":"        \"\"\""},{"line_number":206,"context_line":"        return self.traceroute_host(host, **kwargs)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def tcp_check(self, host, **kwargs):"},{"line_number":209,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"9a80dd14_40088b2d","line":206,"updated":"2015-03-11 10:33:36.000000000","message":"I wouldn\u0027t call it regular udp check without an actually listening UDP port.","commit_id":"edc72b5d6a8af3dbc07fc9db28ff1a111932215f"}],"tempest/config.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"240ccbf4be317de80618305bbe59db1b00813009","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"               help\u003d\"Test generator class for all negative tests\"),"},{"line_number":1031,"context_line":"]"},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"security_group \u003d cfg.OptGroup(name\u003d\u0027security_group\u0027, title\u003d(\"Security Groups \""},{"line_number":1034,"context_line":"                                                            \"Test Options\"))"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"SecurityGroup \u003d ["}],"source_content_type":"text/x-python","patch_set":16,"id":"3a961159_5c5ebe14","line":1033,"updated":"2015-01-20 14:11:56.000000000","message":"this might have been discussed in previous patches - why a new section?\nWhy not use \"network\" or \"scenario\" sections?","commit_id":"e52bdb1d567f97fd230ea7cb457ab0f175131fc3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"7324ab5bfb7794ddf7c897d047abd333f7bb9cf5","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"               help\u003d\"Test generator class for all negative tests\"),"},{"line_number":1031,"context_line":"]"},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"security_group \u003d cfg.OptGroup(name\u003d\u0027security_group\u0027, title\u003d(\"Security Groups \""},{"line_number":1034,"context_line":"                                                            \"Test Options\"))"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"SecurityGroup \u003d ["}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_c54e0b96","line":1033,"in_reply_to":"3a961159_5c5ebe14","updated":"2015-01-23 16:12:51.000000000","message":"It made sense to me, but I can add the option to network or scenario sections instead.","commit_id":"e52bdb1d567f97fd230ea7cb457ab0f175131fc3"}],"tempest/scenario/manager.py":[{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a0e9f5372378424d40377bafbe29c624414b40bc","unresolved":false,"context_lines":[{"line_number":1464,"context_line":"            try:"},{"line_number":1465,"context_line":"                try_connect(dest)"},{"line_number":1466,"context_line":"            except exceptions.SSHExecCommandFailed:"},{"line_number":1467,"context_line":"                LOG.warn(\u0027Failed to connect IP: %s via a ssh connection from: \u0027"},{"line_number":1468,"context_line":"                         \u0027%s.\u0027"},{"line_number":1469,"context_line":"                         % (dest, source.ssh_client.host))"},{"line_number":1470,"context_line":"                return not should_succeed"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_b9d9a0f6","line":1467,"updated":"2014-09-07 12:00:32.000000000","message":"try_connect can use either ssh or any other given method (such as icmp), please change the warning to match any kind of method.","commit_id":"8fd88a0b84a512ad00323540db12c129c0319ee3"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":1967,"context_line":"            raise"},{"line_number":1968,"context_line":""},{"line_number":1969,"context_line":"    def _check_remote_connectivity(self, source, dest, should_succeed\u003dTrue,"},{"line_number":1970,"context_line":"                                   method\u003d\u0027icmp_check\u0027):"},{"line_number":1971,"context_line":"        \"\"\""},{"line_number":1972,"context_line":"        check server connectivity via ssh from source to dest through method"},{"line_number":1973,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_bb55b7c7","line":1970,"updated":"2014-09-10 11:19:27.000000000","message":"Why pass this as a string? Why not receive a function-pointer?","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"22469f8ba7c9b26da43e571ae347c0ea38266233","unresolved":false,"context_lines":[{"line_number":1967,"context_line":"            raise"},{"line_number":1968,"context_line":""},{"line_number":1969,"context_line":"    def _check_remote_connectivity(self, source, dest, should_succeed\u003dTrue,"},{"line_number":1970,"context_line":"                                   method\u003d\u0027icmp_check\u0027):"},{"line_number":1971,"context_line":"        \"\"\""},{"line_number":1972,"context_line":"        check server connectivity via ssh from source to dest through method"},{"line_number":1973,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_37a901e0","line":1970,"in_reply_to":"fa98f980_bb55b7c7","updated":"2014-11-28 18:16:37.000000000","message":"This method is being used on another other test: test_network_basic_ops\n\nAdding the argument with a default value will assure that the execution stays the same. We can refactor this in the future though.","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":1980,"context_line":"            return comparison between the connectivity check result to it\u0027s"},{"line_number":1981,"context_line":"            expected result"},{"line_number":1982,"context_line":"        \"\"\""},{"line_number":1983,"context_line":"        try_connect \u003d getattr(source, method)"},{"line_number":1984,"context_line":""},{"line_number":1985,"context_line":"        def connect_remote():"},{"line_number":1986,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_7b726f7d","line":1983,"updated":"2014-09-10 11:19:27.000000000","message":"\"try_connect\" is a bad name. How about \"connectivity_checker\"?","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"22469f8ba7c9b26da43e571ae347c0ea38266233","unresolved":false,"context_lines":[{"line_number":1980,"context_line":"            return comparison between the connectivity check result to it\u0027s"},{"line_number":1981,"context_line":"            expected result"},{"line_number":1982,"context_line":"        \"\"\""},{"line_number":1983,"context_line":"        try_connect \u003d getattr(source, method)"},{"line_number":1984,"context_line":""},{"line_number":1985,"context_line":"        def connect_remote():"},{"line_number":1986,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_97bc7508","line":1983,"in_reply_to":"fa98f980_7b726f7d","updated":"2014-11-28 18:16:37.000000000","message":"Done","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":1987,"context_line":"                try_connect(dest)"},{"line_number":1988,"context_line":"            except exceptions.SSHExecCommandFailed:"},{"line_number":1989,"context_line":"                LOG.warn(\u0027Failed to connect IP: {dest} via {method} \u0027"},{"line_number":1990,"context_line":"                         \u0027connection from: {source}\u0027"},{"line_number":1991,"context_line":"                         .format(dest\u003ddest, method\u003dmethod,"},{"line_number":1992,"context_line":"                                 source\u003dsource.ssh_client.host))"},{"line_number":1993,"context_line":"                return not should_succeed"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_7b4b4f2b","line":1990,"updated":"2014-09-10 11:19:27.000000000","message":"See other file for comment about string formatting.","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"22469f8ba7c9b26da43e571ae347c0ea38266233","unresolved":false,"context_lines":[{"line_number":1987,"context_line":"                try_connect(dest)"},{"line_number":1988,"context_line":"            except exceptions.SSHExecCommandFailed:"},{"line_number":1989,"context_line":"                LOG.warn(\u0027Failed to connect IP: {dest} via {method} \u0027"},{"line_number":1990,"context_line":"                         \u0027connection from: {source}\u0027"},{"line_number":1991,"context_line":"                         .format(dest\u003ddest, method\u003dmethod,"},{"line_number":1992,"context_line":"                                 source\u003dsource.ssh_client.host))"},{"line_number":1993,"context_line":"                return not should_succeed"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_d7b8bdea","line":1990,"in_reply_to":"fa98f980_7b4b4f2b","updated":"2014-11-28 18:16:37.000000000","message":"Done","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"bfb2ae0abee700e33e7e653515f6dc94eaba07d8","unresolved":false,"context_lines":[{"line_number":774,"context_line":"        :param method: connectivity method to check with"},{"line_number":775,"context_line":"        :param should_succeed: boolean - should try_connect succeed or not"},{"line_number":776,"context_line":"        :returns: boolean -- (should_succeed \u003d\u003d try_connect)"},{"line_number":777,"context_line":"            return comparison between the connectivity check result to it\u0027s"},{"line_number":778,"context_line":"            expected result"},{"line_number":779,"context_line":"        \"\"\""},{"line_number":780,"context_line":"        connectivity_checker \u003d getattr(source, method)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_2fe468ab","line":777,"updated":"2014-12-16 13:24:06.000000000","message":"typo : it\u0027s \"its\"","commit_id":"64e7e3031e50dca72d172988622adca8708e7950"}],"tempest/scenario/test_security_groups_basic_ops.py":[{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a0e9f5372378424d40377bafbe29c624414b40bc","unresolved":false,"context_lines":[{"line_number":354,"context_line":"                                                    should_succeed,"},{"line_number":355,"context_line":"                                                    method + \"_check\"),"},{"line_number":356,"context_line":"                    msg)"},{"line_number":357,"context_line":"            except test.exceptions.SSHTimeout:"},{"line_number":358,"context_line":"                raise"},{"line_number":359,"context_line":"            except Exception:"},{"line_number":360,"context_line":"                debug.log_net_debug()"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_f99168f2","line":357,"updated":"2014-09-07 12:00:32.000000000","message":"please add docstring to describe why SSHTimeout is handled differently.","commit_id":"8fd88a0b84a512ad00323540db12c129c0319ee3"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"        :param access_point: from which to check"},{"line_number":337,"context_line":"        :param ip: against which to check"},{"line_number":338,"context_line":"        :param test_dict: dict for methods and their expected results:"},{"line_number":339,"context_line":"            {"},{"line_number":340,"context_line":"                \u0027icmp\u0027: True,"},{"line_number":341,"context_line":"                \u0027tcp\u0027: False"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_1bba43c0","line":338,"updated":"2014-09-10 11:19:27.000000000","message":"The test_dict is a bad idea IMO. Why not just initialize \u0027tcp\u0027, \u0027icmp\u0027 and \u0027udp\u0027 to false, and inside the function do \u0027for method in [tcp, udp, icmp]: if method: ...\u0027?","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"22469f8ba7c9b26da43e571ae347c0ea38266233","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"        :param access_point: from which to check"},{"line_number":337,"context_line":"        :param ip: against which to check"},{"line_number":338,"context_line":"        :param test_dict: dict for methods and their expected results:"},{"line_number":339,"context_line":"            {"},{"line_number":340,"context_line":"                \u0027icmp\u0027: True,"},{"line_number":341,"context_line":"                \u0027tcp\u0027: False"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_b25dff17","line":338,"in_reply_to":"fa98f980_1bba43c0","updated":"2014-11-28 18:16:37.000000000","message":"In my implementation, the tested protocols are configurable. This works pretty well for my solution. We can discuss it further, if there is a better way to do it.","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":346,"context_line":"        :raise Exception: Other errors which require network debug"},{"line_number":347,"context_line":"        \"\"\""},{"line_number":348,"context_line":"        for method, should_succeed in test_dict.iteritems():"},{"line_number":349,"context_line":"            try:"},{"line_number":350,"context_line":"                if should_succeed:"},{"line_number":351,"context_line":"                    msg \u003d (\"Timed out waiting for {ip} to become reachable via\""},{"line_number":352,"context_line":"                           \" {method}\".format(ip\u003dip, method\u003dmethod))"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_bbdbf719","line":349,"updated":"2014-09-10 11:19:27.000000000","message":"I understand the \u0027msg\u0027 idea (which is nice), but it was confusing the first time I read this code... I\u0027d rethink this concept (but if you leave it it\u0027s ok).","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"22469f8ba7c9b26da43e571ae347c0ea38266233","unresolved":false,"context_lines":[{"line_number":346,"context_line":"        :raise Exception: Other errors which require network debug"},{"line_number":347,"context_line":"        \"\"\""},{"line_number":348,"context_line":"        for method, should_succeed in test_dict.iteritems():"},{"line_number":349,"context_line":"            try:"},{"line_number":350,"context_line":"                if should_succeed:"},{"line_number":351,"context_line":"                    msg \u003d (\"Timed out waiting for {ip} to become reachable via\""},{"line_number":352,"context_line":"                           \" {method}\".format(ip\u003dip, method\u003dmethod))"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_d2728baf","line":349,"in_reply_to":"fa98f980_bbdbf719","updated":"2014-11-28 18:16:37.000000000","message":"Done","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":349,"context_line":"            try:"},{"line_number":350,"context_line":"                if should_succeed:"},{"line_number":351,"context_line":"                    msg \u003d (\"Timed out waiting for {ip} to become reachable via\""},{"line_number":352,"context_line":"                           \" {method}\".format(ip\u003dip, method\u003dmethod))"},{"line_number":353,"context_line":"                else:"},{"line_number":354,"context_line":"                    msg \u003d \"{ip} is reachable via {method}\".format("},{"line_number":355,"context_line":"                        ip\u003dip,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_bb76973c","line":352,"updated":"2014-09-10 11:19:27.000000000","message":"String formatting...","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"22469f8ba7c9b26da43e571ae347c0ea38266233","unresolved":false,"context_lines":[{"line_number":349,"context_line":"            try:"},{"line_number":350,"context_line":"                if should_succeed:"},{"line_number":351,"context_line":"                    msg \u003d (\"Timed out waiting for {ip} to become reachable via\""},{"line_number":352,"context_line":"                           \" {method}\".format(ip\u003dip, method\u003dmethod))"},{"line_number":353,"context_line":"                else:"},{"line_number":354,"context_line":"                    msg \u003d \"{ip} is reachable via {method}\".format("},{"line_number":355,"context_line":"                        ip\u003dip,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_f277879d","line":352,"in_reply_to":"fa98f980_bb76973c","updated":"2014-11-28 18:16:37.000000000","message":"Done","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e7e9ee1633bfac95d7f626b019364e64305b1752","unresolved":false,"context_lines":[{"line_number":351,"context_line":"                    msg \u003d (\"Timed out waiting for {ip} to become reachable via\""},{"line_number":352,"context_line":"                           \" {method}\".format(ip\u003dip, method\u003dmethod))"},{"line_number":353,"context_line":"                else:"},{"line_number":354,"context_line":"                    msg \u003d \"{ip} is reachable via {method}\".format("},{"line_number":355,"context_line":"                        ip\u003dip,"},{"line_number":356,"context_line":"                        method\u003dmethod"},{"line_number":357,"context_line":"                    )"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_fb8f3f21","line":354,"updated":"2014-09-10 11:19:27.000000000","message":"String formatting...","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"22469f8ba7c9b26da43e571ae347c0ea38266233","unresolved":false,"context_lines":[{"line_number":351,"context_line":"                    msg \u003d (\"Timed out waiting for {ip} to become reachable via\""},{"line_number":352,"context_line":"                           \" {method}\".format(ip\u003dip, method\u003dmethod))"},{"line_number":353,"context_line":"                else:"},{"line_number":354,"context_line":"                    msg \u003d \"{ip} is reachable via {method}\".format("},{"line_number":355,"context_line":"                        ip\u003dip,"},{"line_number":356,"context_line":"                        method\u003dmethod"},{"line_number":357,"context_line":"                    )"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_3272efad","line":354,"in_reply_to":"fa98f980_fb8f3f21","updated":"2014-11-28 18:16:37.000000000","message":"Done","commit_id":"03c7b124d0b377780c335c16741df8b2ff906b54"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"bfb2ae0abee700e33e7e653515f6dc94eaba07d8","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONNECTIVITY_REACHABLE_MSG \u003d \"%(ip)s is reachable via %(method)s.\""},{"line_number":28,"context_line":"CONNECTIVITY_NOT_REACHABLE_MSG \u003d (\"Timed out waiting for %(ip)s to become \""},{"line_number":29,"context_line":"                                  \"reachable via %(method)s.\")"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_0f85ecac","line":27,"updated":"2014-12-16 13:24:06.000000000","message":"I don\u0027t see why you need \"global\" variables here.","commit_id":"64e7e3031e50dca72d172988622adca8708e7950"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"bfb2ae0abee700e33e7e653515f6dc94eaba07d8","unresolved":false,"context_lines":[{"line_number":346,"context_line":"                \u0027tcp\u0027: False"},{"line_number":347,"context_line":"            }"},{"line_number":348,"context_line":"            currently supports: icmp, udp, tcp."},{"line_number":349,"context_line":"        :raise test.exceptions.SSHTimeout: ssh failure to already been"},{"line_number":350,"context_line":"            checked connectivity to access_point"},{"line_number":351,"context_line":"        :raise Exception: Other errors which require network debug"},{"line_number":352,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_0fac0c35","line":349,"updated":"2014-12-16 13:24:06.000000000","message":"I don\u0027t understand this sentence","commit_id":"64e7e3031e50dca72d172988622adca8708e7950"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"240ccbf4be317de80618305bbe59db1b00813009","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        tenant.access_point \u003d server"},{"line_number":272,"context_line":"        self._assign_floating_ips(tenant, server)"},{"line_number":273,"context_line":"        access_point_ssh \u003d self._connect_to_access_point(tenant)"},{"line_number":274,"context_line":"        access_point_ssh.nc_listen_host()"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def _assign_floating_ips(self, tenant, server):"},{"line_number":277,"context_line":"        public_network_id \u003d CONF.network.public_network_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a961159_5c16bef3","line":274,"updated":"2015-01-20 14:11:56.000000000","message":"see my comments on remote_client - if you use port 22 in default, you don\u0027t have to open new ports","commit_id":"e52bdb1d567f97fd230ea7cb457ab0f175131fc3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"7324ab5bfb7794ddf7c897d047abd333f7bb9cf5","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        tenant.access_point \u003d server"},{"line_number":272,"context_line":"        self._assign_floating_ips(tenant, server)"},{"line_number":273,"context_line":"        access_point_ssh \u003d self._connect_to_access_point(tenant)"},{"line_number":274,"context_line":"        access_point_ssh.nc_listen_host()"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def _assign_floating_ips(self, tenant, server):"},{"line_number":277,"context_line":"        public_network_id \u003d CONF.network.public_network_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_45acdb35","line":274,"in_reply_to":"3a961159_5c16bef3","updated":"2015-01-23 16:12:51.000000000","message":"yeah, that\u0027s true and that\u0027s how I wanted to do it in the first place. There is an issue with this though. During the test, the ssh rule, using the port will have to be added and removed quite a few times and would require quite a lot of changes to accomodate this. This is how the test works:\n\n1. They are added in setUp\n\n2. In the test test_cross_tenant_traffic, the method _test_cross_tenant_block will be called, which will make sure that there can be no initial traffic. Meaning that the ssh rule of host1 will have to be destroyed first. (Testing host1 -\u003e host2)\n\n3. In the test test_cross_tenant_traffic, the method _test_cross_tenant_allow. The rule is added. That\u0027s normal. (Testing host1 -\u003e host2)\n\n4. Next, it will test that the reverse is not possible, meaning that the host1 ssh rule will have to be destroyed first. (Testing host2 -\u003e host1)\n\n5. Next the rule will be added. That\u0027s normal (Testing host2 -\u003e host1)\n\nAnd the cherry on top of this, the extra operations mentioned above will only apply to TCP testing, so extra logic will be needed for this too, making them more complicated.\n\nSo, I prefered this option. It\u0027s much simpler, more elegant, the test logic stays pretty much the same and it seems to me the least ammount of change necessary.","commit_id":"e52bdb1d567f97fd230ea7cb457ab0f175131fc3"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"22e0ed79933bf777671f9e0bbe880291a4818a64","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        tenant.access_point \u003d server"},{"line_number":275,"context_line":"        self._assign_floating_ips(tenant, server)"},{"line_number":276,"context_line":"        access_point_ssh \u003d self._connect_to_access_point(tenant)"},{"line_number":277,"context_line":"        access_point_ssh.nc_listen_host()"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def _assign_floating_ips(self, tenant, server):"},{"line_number":280,"context_line":"        public_network_id \u003d CONF.network.public_network_id"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a80dd14_7bb53e30","line":277,"updated":"2015-03-11 10:33:36.000000000","message":"This command is not required when the tcp check is not enabled.","commit_id":"edc72b5d6a8af3dbc07fc9db28ff1a111932215f"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"22e0ed79933bf777671f9e0bbe880291a4818a64","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        if protocol \u003d\u003d \u0027icmp\u0027:"},{"line_number":459,"context_line":"            ruleset \u003d dict(protocol\u003d\u0027icmp\u0027,"},{"line_number":460,"context_line":"                           direction\u003d\u0027ingress\u0027)"},{"line_number":461,"context_line":"        else:"},{"line_number":462,"context_line":"            ruleset \u003d dict(protocol\u003dprotocol,"},{"line_number":463,"context_line":"                           port_range_min\u003dport,"},{"line_number":464,"context_line":"                           port_range_max\u003dport,"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a80dd14_1b1fe20a","line":461,"updated":"2015-03-11 10:33:36.000000000","message":"traceroute will not use udp.port\u003d\u003d80 with the current code,\nthe 53 or 33434 port usage is more likely.","commit_id":"edc72b5d6a8af3dbc07fc9db28ff1a111932215f"}]}
