)]}'
{"neutron/tests/tempest/scenario/test_security_groups.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"014c82f52b5abbc7c27a0be114666884bfe07eb5","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        cmd3 \u003d \"sudo killall -q -9 nc\""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        ssh_server.exec_command(cmd1)"},{"line_number":131,"context_line":"        time.sleep(10)"},{"line_number":132,"context_line":"        output \u003d ssh_client.exec_command(cmd2)"},{"line_number":133,"context_line":"        if should_succeed:"},{"line_number":134,"context_line":"            self.assertIn(\u0027sg_check\u0027, output)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f515b1d_ddb5cc7f","line":131,"updated":"2017-09-27 08:34:15.000000000","message":"why You need this sleep for 10 seconds?","commit_id":"933cb48565c773009b95ac7981b55985fc6cfaeb"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"1d602bfc15ef0a9d8debbf855fef8c2af6a911d9","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        cmd3 \u003d \"sudo killall -q -9 nc\""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        ssh_server.exec_command(cmd1)"},{"line_number":131,"context_line":"        time.sleep(10)"},{"line_number":132,"context_line":"        output \u003d ssh_client.exec_command(cmd2)"},{"line_number":133,"context_line":"        if should_succeed:"},{"line_number":134,"context_line":"            self.assertIn(\u0027sg_check\u0027, output)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f515b1d_22a393b4","line":131,"in_reply_to":"7f515b1d_ddb5cc7f","updated":"2017-09-27 12:59:41.000000000","message":"The problem is that it\u0027s possible the the client side server will send a request before the server is ready. I can probably check for SSH connectivity instead of this line.","commit_id":"933cb48565c773009b95ac7981b55985fc6cfaeb"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"014c82f52b5abbc7c27a0be114666884bfe07eb5","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        self._check_connectivity_udp(ssh_server\u003dssh_server,"},{"line_number":181,"context_line":"                                     ssh_client\u003dssh_client,"},{"line_number":182,"context_line":"                                     fip\u003dfip2,"},{"line_number":183,"context_line":"                                     port_num\u003dPORT_UDP)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f515b1d_bdba106b","line":183,"updated":"2017-09-27 08:34:15.000000000","message":"nit: I would personally pass here also \"should_succeed\u003dTrue\" for better readability","commit_id":"933cb48565c773009b95ac7981b55985fc6cfaeb"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"1d602bfc15ef0a9d8debbf855fef8c2af6a911d9","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        self._check_connectivity_udp(ssh_server\u003dssh_server,"},{"line_number":181,"context_line":"                                     ssh_client\u003dssh_client,"},{"line_number":182,"context_line":"                                     fip\u003dfip2,"},{"line_number":183,"context_line":"                                     port_num\u003dPORT_UDP)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f515b1d_02965740","line":183,"in_reply_to":"7f515b1d_bdba106b","updated":"2017-09-27 12:59:41.000000000","message":"I\u0027ll update when I have the solution for the problem with non-cirros image.","commit_id":"933cb48565c773009b95ac7981b55985fc6cfaeb"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"84df92ed23aa8a9d90078134d71b2153db97ee12","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        cls.create_router_interface(router[\u0027id\u0027], cls.subnet[\u0027id\u0027])"},{"line_number":41,"context_line":"        cls.keypair \u003d cls.create_keypair()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def create_vm_testing_sec_grp(self, num_servers\u003d2, security_groups\u003dNone):"},{"line_number":44,"context_line":"        servers, fips, server_ssh_clients \u003d ([], [], [])"},{"line_number":45,"context_line":"        for i in range(num_servers):"},{"line_number":46,"context_line":"            servers.append(self.create_server("}],"source_content_type":"text/x-python","patch_set":11,"id":"7f515b1d_37ce1b2d","line":43,"updated":"2017-09-28 07:06:45.000000000","message":"nit: maybe \"create_vms_...\" as it can create more than one vm in one call of method?","commit_id":"4164c1be1add183fdbcf5c2ea16b7931281545af"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0becaf3dd6128fab5ddf2f56662f98c0ee55536e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        cls.create_router_interface(router[\u0027id\u0027], cls.subnet[\u0027id\u0027])"},{"line_number":41,"context_line":"        cls.keypair \u003d cls.create_keypair()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def create_vm_testing_sec_grp(self, num_servers\u003d2, security_groups\u003dNone):"},{"line_number":44,"context_line":"        servers, fips, server_ssh_clients \u003d ([], [], [])"},{"line_number":45,"context_line":"        for i in range(num_servers):"},{"line_number":46,"context_line":"            servers.append(self.create_server("}],"source_content_type":"text/x-python","patch_set":11,"id":"7f515b1d_dac36e88","line":43,"in_reply_to":"7f515b1d_37ce1b2d","updated":"2017-09-28 07:31:56.000000000","message":"unrelated to this patch","commit_id":"4164c1be1add183fdbcf5c2ea16b7931281545af"},{"author":{"_account_id":21302,"name":"Gena","email":"gcheresh@redhat.com","username":"gcheresh"},"change_message_id":"af95358701ed62c279bfcac9ae73496d92c373c4","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        \"\"\""},{"line_number":171,"context_line":"        PORT_UDP \u003d 60000"},{"line_number":172,"context_line":"        self.setup_network_and_server()"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        server2 \u003d self.create_server("},{"line_number":175,"context_line":"            flavor_ref\u003dCONF.compute.flavor_ref,"},{"line_number":176,"context_line":"            image_ref\u003dCONF.compute.image_ref,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f515b1d_72280896","line":173,"updated":"2017-09-29 05:21:57.000000000","message":"There is create_vm_testing_sec_grp for all the tests in sec group, so why not use for creation of both VMs?","commit_id":"4164c1be1add183fdbcf5c2ea16b7931281545af"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"0d846719fbef5b081bbf74baeb2d1b0d370bb85a","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        \"\"\""},{"line_number":171,"context_line":"        PORT_UDP \u003d 60000"},{"line_number":172,"context_line":"        self.setup_network_and_server()"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        server2 \u003d self.create_server("},{"line_number":175,"context_line":"            flavor_ref\u003dCONF.compute.flavor_ref,"},{"line_number":176,"context_line":"            image_ref\u003dCONF.compute.image_ref,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f515b1d_3f6fd42b","line":173,"in_reply_to":"7f515b1d_72280896","updated":"2017-10-02 12:58:37.000000000","message":"Done","commit_id":"4164c1be1add183fdbcf5c2ea16b7931281545af"},{"author":{"_account_id":21302,"name":"Gena","email":"gcheresh@redhat.com","username":"gcheresh"},"change_message_id":"af95358701ed62c279bfcac9ae73496d92c373c4","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        ssh_server \u003d remote_client.RemoteClient("},{"line_number":193,"context_line":"            fip2[\u0027floating_ip_address\u0027],"},{"line_number":194,"context_line":"            CONF.validation.image_ssh_user,"},{"line_number":195,"context_line":"            pkey\u003dself.keypair[\u0027private_key\u0027], server\u003dserver2[\u0027server\u0027])"},{"line_number":196,"context_line":"        self._check_connectivity_udp("},{"line_number":197,"context_line":"            ssh_client\u003dssh_client, ssh_server\u003dssh_server,"},{"line_number":198,"context_line":"            fip\u003dfip2, port_num\u003dPORT_UDP, should_succeed\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f515b1d_322050ac","line":195,"updated":"2017-09-29 05:21:57.000000000","message":"If you\u0027ll use this function for creating VMs, you\u0027ll get the ssh clients as well and there will be no need to create them","commit_id":"4164c1be1add183fdbcf5c2ea16b7931281545af"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"0d846719fbef5b081bbf74baeb2d1b0d370bb85a","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        ssh_server \u003d remote_client.RemoteClient("},{"line_number":193,"context_line":"            fip2[\u0027floating_ip_address\u0027],"},{"line_number":194,"context_line":"            CONF.validation.image_ssh_user,"},{"line_number":195,"context_line":"            pkey\u003dself.keypair[\u0027private_key\u0027], server\u003dserver2[\u0027server\u0027])"},{"line_number":196,"context_line":"        self._check_connectivity_udp("},{"line_number":197,"context_line":"            ssh_client\u003dssh_client, ssh_server\u003dssh_server,"},{"line_number":198,"context_line":"            fip\u003dfip2, port_num\u003dPORT_UDP, should_succeed\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f515b1d_1f6ad818","line":195,"in_reply_to":"7f515b1d_322050ac","updated":"2017-10-02 12:58:37.000000000","message":"Done","commit_id":"4164c1be1add183fdbcf5c2ea16b7931281545af"},{"author":{"_account_id":21302,"name":"Gena","email":"gcheresh@redhat.com","username":"gcheresh"},"change_message_id":"af95358701ed62c279bfcac9ae73496d92c373c4","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                                                \u0027floating_ip_address\u0027],"},{"line_number":229,"context_line":"                                                port_num)"},{"line_number":230,"context_line":"        cmd4 \u003d \"sudo kill -9 $(pidof nc)\""},{"line_number":231,"context_line":"        cmd5 \u003d \"cat /tmp/1\""},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        ssh_server.exec_command(cmd1)"},{"line_number":234,"context_line":"        ssh_server.exec_command(cmd2)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f515b1d_72012806","line":231,"updated":"2017-09-29 05:21:57.000000000","message":"Some explanation why you need all this 5 commands will help","commit_id":"4164c1be1add183fdbcf5c2ea16b7931281545af"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e04beac53ad344b29cd47bdc9754e47cdabd410e","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        ssh_server.exec_command(cmd1)"},{"line_number":223,"context_line":"        ssh_server.exec_command(cmd2)"},{"line_number":224,"context_line":"        ssh_client.exec_command(cmd3)"},{"line_number":225,"context_line":"        output \u003d ssh_server.exec_command(cmd5)"},{"line_number":226,"context_line":"        if should_succeed:"},{"line_number":227,"context_line":"            self.assertIn(\u0027sg_check\u0027, output)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_9330fc57","line":224,"updated":"2017-10-02 19:15:18.000000000","message":"personally I don\u0027t like names like cmd1,2,3 and so on but if it\u0027s ok for other reviewers than fine :)","commit_id":"b38a078ef04c56039997105aec56996dd9e18d7d"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"018ae64ef7c1c94a47aaf7b59804d96bd8865fb0","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        ssh_server.exec_command(cmd1)"},{"line_number":223,"context_line":"        ssh_server.exec_command(cmd2)"},{"line_number":224,"context_line":"        ssh_client.exec_command(cmd3)"},{"line_number":225,"context_line":"        output \u003d ssh_server.exec_command(cmd5)"},{"line_number":226,"context_line":"        if should_succeed:"},{"line_number":227,"context_line":"            self.assertIn(\u0027sg_check\u0027, output)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_666811f4","line":224,"in_reply_to":"7f515b1d_661931d5","updated":"2017-10-03 10:13:13.000000000","message":"Maybe better would be something like \"cmd_echo_to_nc\", \"cmd_kill_nc\" or \"cmd_cat\" or just \"echo_to_nc\", \"kill_nc\", \"cat\" without \"cmd_\" - IMHO it would be easier to read. But it\u0027s only mine opinion so You can do it as You want :)","commit_id":"b38a078ef04c56039997105aec56996dd9e18d7d"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"183eba596f21d3e3e2ad7cf56f8b7e7a71a0ef99","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        ssh_server.exec_command(cmd1)"},{"line_number":223,"context_line":"        ssh_server.exec_command(cmd2)"},{"line_number":224,"context_line":"        ssh_client.exec_command(cmd3)"},{"line_number":225,"context_line":"        output \u003d ssh_server.exec_command(cmd5)"},{"line_number":226,"context_line":"        if should_succeed:"},{"line_number":227,"context_line":"            self.assertIn(\u0027sg_check\u0027, output)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_661931d5","line":224,"in_reply_to":"7f515b1d_9330fc57","updated":"2017-10-03 10:06:49.000000000","message":"I\u0027m open to suggestions","commit_id":"b38a078ef04c56039997105aec56996dd9e18d7d"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e04beac53ad344b29cd47bdc9754e47cdabd410e","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            self.assertIn(\u0027sg_check\u0027, output)"},{"line_number":228,"context_line":"        else:"},{"line_number":229,"context_line":"            self.assertNotIn(\u0027sg_check\u0027, output)"},{"line_number":230,"context_line":"            ssh_server.exec_command(cmd4)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_f34610c0","line":230,"updated":"2017-10-02 19:15:18.000000000","message":"maybe stupid question but why cmd4 is executed after cmd5? ;)","commit_id":"b38a078ef04c56039997105aec56996dd9e18d7d"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"183eba596f21d3e3e2ad7cf56f8b7e7a71a0ef99","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            self.assertIn(\u0027sg_check\u0027, output)"},{"line_number":228,"context_line":"        else:"},{"line_number":229,"context_line":"            self.assertNotIn(\u0027sg_check\u0027, output)"},{"line_number":230,"context_line":"            ssh_server.exec_command(cmd4)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_a61a89c2","line":230,"in_reply_to":"7f515b1d_f34610c0","updated":"2017-10-03 10:06:49.000000000","message":"no reason :-)","commit_id":"b38a078ef04c56039997105aec56996dd9e18d7d"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"fed0acb621ff184ecf88d0b4450b91a458bf4820","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        PORT_UDP \u003d 60000"},{"line_number":171,"context_line":"        secgrp \u003d self.os_primary.network_client.create_security_group("},{"line_number":172,"context_line":"            name\u003d\u0027secgrp\u0027)"},{"line_number":173,"context_line":"        self.security_groups.append(secgrp[\u0027security_group\u0027]"},{"line_number":174,"context_line":"        self.create_loginable_secgroup_rule("},{"line_number":175,"context_line":"            secgroup_id\u003dsecgrp[\u0027security_group\u0027][\u0027id\u0027]"},{"line_number":176,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f4b6375_c0334aaa","line":173,"updated":"2017-10-26 14:27:47.000000000","message":"missing \")\" at the end of line","commit_id":"899e3d02513fe31bf3f590b22f45dcc43c8f94c5"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"cb6640612ecbca0fd8c4b22961cf26c692f911b9","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        PORT_UDP \u003d 60000"},{"line_number":171,"context_line":"        secgrp \u003d self.os_primary.network_client.create_security_group("},{"line_number":172,"context_line":"            name\u003d\u0027secgrp\u0027)"},{"line_number":173,"context_line":"        self.security_groups.append(secgrp[\u0027security_group\u0027]"},{"line_number":174,"context_line":"        self.create_loginable_secgroup_rule("},{"line_number":175,"context_line":"            secgroup_id\u003dsecgrp[\u0027security_group\u0027][\u0027id\u0027]"},{"line_number":176,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f4b6375_63fb80c0","line":173,"in_reply_to":"3f4b6375_c0334aaa","updated":"2017-10-26 14:58:02.000000000","message":"Done","commit_id":"899e3d02513fe31bf3f590b22f45dcc43c8f94c5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"fed0acb621ff184ecf88d0b4450b91a458bf4820","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.security_groups.append(secgrp[\u0027security_group\u0027]"},{"line_number":174,"context_line":"        self.create_loginable_secgroup_rule("},{"line_number":175,"context_line":"            secgroup_id\u003dsecgrp[\u0027security_group\u0027][\u0027id\u0027]"},{"line_number":176,"context_line":"        )"},{"line_number":177,"context_line":"        ssh_clients, fips, servers \u003d self.create_vm_testing_sec_grp("},{"line_number":178,"context_line":"            security_groups\u003d[{\u0027name\u0027: \u0027secgrp\u0027}])"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f4b6375_a0260e67","line":176,"updated":"2017-10-26 14:27:47.000000000","message":"nit: please move this bracket to line above","commit_id":"899e3d02513fe31bf3f590b22f45dcc43c8f94c5"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"cb6640612ecbca0fd8c4b22961cf26c692f911b9","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.security_groups.append(secgrp[\u0027security_group\u0027]"},{"line_number":174,"context_line":"        self.create_loginable_secgroup_rule("},{"line_number":175,"context_line":"            secgroup_id\u003dsecgrp[\u0027security_group\u0027][\u0027id\u0027]"},{"line_number":176,"context_line":"        )"},{"line_number":177,"context_line":"        ssh_clients, fips, servers \u003d self.create_vm_testing_sec_grp("},{"line_number":178,"context_line":"            security_groups\u003d[{\u0027name\u0027: \u0027secgrp\u0027}])"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f4b6375_43f644d9","line":176,"in_reply_to":"3f4b6375_a0260e67","updated":"2017-10-26 14:58:02.000000000","message":"Done","commit_id":"899e3d02513fe31bf3f590b22f45dcc43c8f94c5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7e25912c4a5d4b8b684681fc2ffc1265490c482d","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        :param should_succeed(boolean): Should the connection be successful"},{"line_number":205,"context_line":"        \"\"\""},{"line_number":206,"context_line":"        # Creating a script on the server to write sg_check"},{"line_number":207,"context_line":"        # to /tmp/1 file"},{"line_number":208,"context_line":"        cmd1 \u003d (\"echo \u0027#!/bin/sh\\necho sg_check \u003e /tmp/1\u0027 \""},{"line_number":209,"context_line":"                \"\u003e /tmp/1.sh \u0026\u0026 chmod +x /tmp/1.sh \u0026\u0026 touch /tmp/1\")"},{"line_number":210,"context_line":"        # Listen on UDP port and execute the script when a connection is made"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f4b6375_efc071e3","line":207,"updated":"2017-10-26 17:55:37.000000000","message":"For temp files we should use self.get_temp_file_path() or the methods right above it in base.py, that way they are unique and will be cleaned-up properly.","commit_id":"1d02697d0bef597d7d49badfe515c8d9fccec09d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"09a15a7c34f11ab4c10493e06c1aa28ccfee36b4","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        :param should_succeed(boolean): Should the connection be successful"},{"line_number":205,"context_line":"        \"\"\""},{"line_number":206,"context_line":"        # Creating a script on the server to write sg_check"},{"line_number":207,"context_line":"        # to /tmp/1 file"},{"line_number":208,"context_line":"        cmd1 \u003d (\"echo \u0027#!/bin/sh\\necho sg_check \u003e /tmp/1\u0027 \""},{"line_number":209,"context_line":"                \"\u003e /tmp/1.sh \u0026\u0026 chmod +x /tmp/1.sh \u0026\u0026 touch /tmp/1\")"},{"line_number":210,"context_line":"        # Listen on UDP port and execute the script when a connection is made"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f4b6375_e35cf34b","line":207,"in_reply_to":"3f4b6375_c0869f66","updated":"2017-10-27 14:25:59.000000000","message":"Yes, I think we should do something.  Even just putting code right in this method:\n\ntest_dir \u003d self.useFixture(fixtures.TempDir())\n...","commit_id":"1d02697d0bef597d7d49badfe515c8d9fccec09d"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"226f06d70197a277c6a20fc708ca62118a33b351","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        :param should_succeed(boolean): Should the connection be successful"},{"line_number":205,"context_line":"        \"\"\""},{"line_number":206,"context_line":"        # Creating a script on the server to write sg_check"},{"line_number":207,"context_line":"        # to /tmp/1 file"},{"line_number":208,"context_line":"        cmd1 \u003d (\"echo \u0027#!/bin/sh\\necho sg_check \u003e /tmp/1\u0027 \""},{"line_number":209,"context_line":"                \"\u003e /tmp/1.sh \u0026\u0026 chmod +x /tmp/1.sh \u0026\u0026 touch /tmp/1\")"},{"line_number":210,"context_line":"        # Listen on UDP port and execute the script when a connection is made"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f4b6375_c0869f66","line":207,"in_reply_to":"3f4b6375_efc071e3","updated":"2017-10-26 21:49:25.000000000","message":"It\u0027s not in the parents of this class. Should we add it to scenario/base.py ?","commit_id":"1d02697d0bef597d7d49badfe515c8d9fccec09d"}],"neutron/tests/tempest/scenario/test_securitygroups.py":[{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"581747cb578cfbf160c1c32161830da84c50b69e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                                      )[\u0027ports\u0027][0]"},{"line_number":48,"context_line":"        fip2 \u003d self.create_and_associate_floatingip(port[\u0027id\u0027])"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        server_ssh_client \u003d remote_client.RemoteClient("},{"line_number":51,"context_line":"            self.fip[\u0027floating_ip_address\u0027],"},{"line_number":52,"context_line":"            CONF.validation.image_ssh_user,"},{"line_number":53,"context_line":"            pkey\u003dself.keypair[\u0027private_key\u0027], server\u003dself.server[\u0027server\u0027])"},{"line_number":54,"context_line":"        server_ssh_client2 \u003d remote_client.RemoteClient("},{"line_number":55,"context_line":"            fip2[\u0027floating_ip_address\u0027],"},{"line_number":56,"context_line":"            CONF.validation.image_ssh_user,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_81f4aad0","line":53,"range":{"start_line":50,"start_character":8,"end_line":53,"end_character":75},"updated":"2017-05-22 03:56:23.000000000","message":"Do we need create a server named \"server\"?","commit_id":"503c5db9c5275541cebb213ea09d396be2c9180b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"9db70f9cb2e6dc8ed06e1da894842c5930e7e618","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                                      )[\u0027ports\u0027][0]"},{"line_number":48,"context_line":"        fip2 \u003d self.create_and_associate_floatingip(port[\u0027id\u0027])"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        server_ssh_client \u003d remote_client.RemoteClient("},{"line_number":51,"context_line":"            self.fip[\u0027floating_ip_address\u0027],"},{"line_number":52,"context_line":"            CONF.validation.image_ssh_user,"},{"line_number":53,"context_line":"            pkey\u003dself.keypair[\u0027private_key\u0027], server\u003dself.server[\u0027server\u0027])"},{"line_number":54,"context_line":"        server_ssh_client2 \u003d remote_client.RemoteClient("},{"line_number":55,"context_line":"            fip2[\u0027floating_ip_address\u0027],"},{"line_number":56,"context_line":"            CONF.validation.image_ssh_user,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_b65db3ea","line":53,"range":{"start_line":50,"start_character":8,"end_line":53,"end_character":75},"in_reply_to":"ff0f0b1f_81f4aad0","updated":"2017-05-22 06:17:06.000000000","message":"Removing","commit_id":"503c5db9c5275541cebb213ea09d396be2c9180b"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"581747cb578cfbf160c1c32161830da84c50b69e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            fip2[\u0027floating_ip_address\u0027],"},{"line_number":56,"context_line":"            CONF.validation.image_ssh_user,"},{"line_number":57,"context_line":"            pkey\u003dself.keypair[\u0027private_key\u0027], server\u003dserver2[\u0027server\u0027])"},{"line_number":58,"context_line":"        self._check_connectivity("},{"line_number":59,"context_line":"            ssh_client1\u003dserver_ssh_client, ssh_client2\u003dserver_ssh_client2,"},{"line_number":60,"context_line":"            fip2\u003dfip2, should_succeed\u003dFalse)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_a1d0ce20","line":58,"range":{"start_line":58,"start_character":13,"end_line":58,"end_character":32},"updated":"2017-05-22 03:56:23.000000000","message":"what\u0027s the purpose of this function?","commit_id":"503c5db9c5275541cebb213ea09d396be2c9180b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"9db70f9cb2e6dc8ed06e1da894842c5930e7e618","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            fip2[\u0027floating_ip_address\u0027],"},{"line_number":56,"context_line":"            CONF.validation.image_ssh_user,"},{"line_number":57,"context_line":"            pkey\u003dself.keypair[\u0027private_key\u0027], server\u003dserver2[\u0027server\u0027])"},{"line_number":58,"context_line":"        self._check_connectivity("},{"line_number":59,"context_line":"            ssh_client1\u003dserver_ssh_client, ssh_client2\u003dserver_ssh_client2,"},{"line_number":60,"context_line":"            fip2\u003dfip2, should_succeed\u003dFalse)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_566e5795","line":58,"range":{"start_line":58,"start_character":13,"end_line":58,"end_character":32},"in_reply_to":"ff0f0b1f_a1d0ce20","updated":"2017-05-22 06:17:06.000000000","message":"It should be _check_connectivity_udp - fixing","commit_id":"503c5db9c5275541cebb213ea09d396be2c9180b"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"581747cb578cfbf160c1c32161830da84c50b69e","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                     \u0027remote_ip_prefix\u0027: \u00270.0.0.0/0\u0027}]"},{"line_number":67,"context_line":"        self.create_secgroup_rules(rulesets,"},{"line_number":68,"context_line":"                                   self.security_groups[0][\u0027id\u0027])"},{"line_number":69,"context_line":"        self._check_connectivity_udp(ssh_client1\u003dserver_ssh_client,"},{"line_number":70,"context_line":"                                     ssh_client2\u003dserver_ssh_client2,"},{"line_number":71,"context_line":"                                     fip2\u003dfip2)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_61e75642","line":69,"range":{"start_line":69,"start_character":13,"end_line":69,"end_character":36},"updated":"2017-05-22 03:56:23.000000000","message":"The port number should pass here.","commit_id":"503c5db9c5275541cebb213ea09d396be2c9180b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"9db70f9cb2e6dc8ed06e1da894842c5930e7e618","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                     \u0027remote_ip_prefix\u0027: \u00270.0.0.0/0\u0027}]"},{"line_number":67,"context_line":"        self.create_secgroup_rules(rulesets,"},{"line_number":68,"context_line":"                                   self.security_groups[0][\u0027id\u0027])"},{"line_number":69,"context_line":"        self._check_connectivity_udp(ssh_client1\u003dserver_ssh_client,"},{"line_number":70,"context_line":"                                     ssh_client2\u003dserver_ssh_client2,"},{"line_number":71,"context_line":"                                     fip2\u003dfip2)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_16069fcf","line":69,"range":{"start_line":69,"start_character":13,"end_line":69,"end_character":36},"in_reply_to":"ff0f0b1f_61e75642","updated":"2017-05-22 06:17:06.000000000","message":"Done","commit_id":"503c5db9c5275541cebb213ea09d396be2c9180b"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"581747cb578cfbf160c1c32161830da84c50b69e","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                                     ssh_client2\u003dserver_ssh_client2,"},{"line_number":71,"context_line":"                                     fip2\u003dfip2)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def _check_connectivity_udp(self, ssh_client1, ssh_client2, fip2,"},{"line_number":74,"context_line":"                                port_num, should_succeed\u003dTrue):"},{"line_number":75,"context_line":"        cmd1 \u003d (\"echo sg_check|nc -l -u -p %d  \u0026\""},{"line_number":76,"context_line":"                % port_num)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_81cb8a70","line":73,"range":{"start_line":73,"start_character":64,"end_line":73,"end_character":68},"updated":"2017-05-22 03:56:23.000000000","message":"nit: \"fip\" is better","commit_id":"503c5db9c5275541cebb213ea09d396be2c9180b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"9db70f9cb2e6dc8ed06e1da894842c5930e7e618","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                                     ssh_client2\u003dserver_ssh_client2,"},{"line_number":71,"context_line":"                                     fip2\u003dfip2)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def _check_connectivity_udp(self, ssh_client1, ssh_client2, fip2,"},{"line_number":74,"context_line":"                                port_num, should_succeed\u003dTrue):"},{"line_number":75,"context_line":"        cmd1 \u003d (\"echo sg_check|nc -l -u -p %d  \u0026\""},{"line_number":76,"context_line":"                % port_num)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_f608cbd9","line":73,"range":{"start_line":73,"start_character":64,"end_line":73,"end_character":68},"in_reply_to":"ff0f0b1f_81cb8a70","updated":"2017-05-22 06:17:06.000000000","message":"Done","commit_id":"503c5db9c5275541cebb213ea09d396be2c9180b"},{"author":{"_account_id":21302,"name":"Gena","email":"gcheresh@redhat.com","username":"gcheresh"},"change_message_id":"0b09468fff180f352bc4422adc209aa2b58d77d0","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class NetworkSecurityGroupTest(base.BaseTempestTestCase):"},{"line_number":28,"context_line":"    credentials \u003d [\u0027primary\u0027]"},{"line_number":29,"context_line":"    force_tenant_isolation \u003d False"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @decorators.idempotent_id(\u0027de07fe0a-e955-123e-b48b-8641c14cd52e\u0027)"},{"line_number":32,"context_line":"    def test_securitygroup_udp(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_7a66b5c3","line":29,"updated":"2017-05-23 08:50:46.000000000","message":"Add docstring","commit_id":"2c2f67148aaef0ad3f20579bdd05966811fa94ed"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"1855cedcf551b1211bc915944beb5f75919fab57","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class NetworkSecurityGroupTest(base.BaseTempestTestCase):"},{"line_number":28,"context_line":"    credentials \u003d [\u0027primary\u0027]"},{"line_number":29,"context_line":"    force_tenant_isolation \u003d False"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @decorators.idempotent_id(\u0027de07fe0a-e955-123e-b48b-8641c14cd52e\u0027)"},{"line_number":32,"context_line":"    def test_securitygroup_udp(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_45b3c2e9","line":29,"in_reply_to":"ff0f0b1f_7a66b5c3","updated":"2017-05-25 09:09:18.000000000","message":"Done","commit_id":"2c2f67148aaef0ad3f20579bdd05966811fa94ed"},{"author":{"_account_id":21302,"name":"Gena","email":"gcheresh@redhat.com","username":"gcheresh"},"change_message_id":"5a66ac8107642893620f99bc753f23f8b959193b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        port \u003d self.client.list_ports(network_id\u003dself.network[\u0027id\u0027],"},{"line_number":46,"context_line":"                                      device_id\u003dserver2[\u0027server\u0027][\u0027id\u0027]"},{"line_number":47,"context_line":"                                      )[\u0027ports\u0027][0]"},{"line_number":48,"context_line":"        fip \u003d self.create_and_associate_floatingip(port[\u0027id\u0027])"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        server_ssh_client \u003d remote_client.RemoteClient("},{"line_number":51,"context_line":"            self.fip[\u0027floating_ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_2c724bae","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":11},"updated":"2017-05-23 07:53:21.000000000","message":"Name is a little bit misleading as you use later self.fip that relates to VM1 and fip that relates to VM2, maybe it\u0027s better to call it fip2","commit_id":"2c2f67148aaef0ad3f20579bdd05966811fa94ed"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"1855cedcf551b1211bc915944beb5f75919fab57","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        port \u003d self.client.list_ports(network_id\u003dself.network[\u0027id\u0027],"},{"line_number":46,"context_line":"                                      device_id\u003dserver2[\u0027server\u0027][\u0027id\u0027]"},{"line_number":47,"context_line":"                                      )[\u0027ports\u0027][0]"},{"line_number":48,"context_line":"        fip \u003d self.create_and_associate_floatingip(port[\u0027id\u0027])"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        server_ssh_client \u003d remote_client.RemoteClient("},{"line_number":51,"context_line":"            self.fip[\u0027floating_ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_65824602","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":11},"in_reply_to":"ff0f0b1f_2c724bae","updated":"2017-05-25 09:09:18.000000000","message":"Done","commit_id":"2c2f67148aaef0ad3f20579bdd05966811fa94ed"},{"author":{"_account_id":21302,"name":"Gena","email":"gcheresh@redhat.com","username":"gcheresh"},"change_message_id":"5a66ac8107642893620f99bc753f23f8b959193b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        server_ssh_client2 \u003d remote_client.RemoteClient("},{"line_number":55,"context_line":"            fip[\u0027floating_ip_address\u0027],"},{"line_number":56,"context_line":"            CONF.validation.image_ssh_user,"},{"line_number":57,"context_line":"            pkey\u003dself.keypair[\u0027private_key\u0027])"},{"line_number":58,"context_line":"        self._check_connectivity_udp("},{"line_number":59,"context_line":"            ssh_client1\u003dserver_ssh_client, ssh_client2\u003dserver_ssh_client2,"},{"line_number":60,"context_line":"            fip\u003dfip, port_num\u003dPORT_UDP, should_succeed\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_6c8a836a","line":57,"updated":"2017-05-23 07:53:21.000000000","message":"You don\u0027t write server parameter in here on purpose?","commit_id":"2c2f67148aaef0ad3f20579bdd05966811fa94ed"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"1855cedcf551b1211bc915944beb5f75919fab57","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        server_ssh_client2 \u003d remote_client.RemoteClient("},{"line_number":55,"context_line":"            fip[\u0027floating_ip_address\u0027],"},{"line_number":56,"context_line":"            CONF.validation.image_ssh_user,"},{"line_number":57,"context_line":"            pkey\u003dself.keypair[\u0027private_key\u0027])"},{"line_number":58,"context_line":"        self._check_connectivity_udp("},{"line_number":59,"context_line":"            ssh_client1\u003dserver_ssh_client, ssh_client2\u003dserver_ssh_client2,"},{"line_number":60,"context_line":"            fip\u003dfip, port_num\u003dPORT_UDP, should_succeed\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_a5917e49","line":57,"in_reply_to":"ff0f0b1f_6c8a836a","updated":"2017-05-25 09:09:18.000000000","message":"Done","commit_id":"2c2f67148aaef0ad3f20579bdd05966811fa94ed"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"23518e7ff63535f2ba3d56048324046547279adb","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            ssh_client1\u003dserver_ssh_client, ssh_client2\u003dserver_ssh_client2,"},{"line_number":60,"context_line":"            fip\u003dfip, port_num\u003dPORT_UDP, should_succeed\u003dFalse)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        rulesets \u003d [{\u0027protocol\u0027: \u0027udp\u0027,"},{"line_number":63,"context_line":"                     \u0027port_range_min\u0027: PORT_UDP,"},{"line_number":64,"context_line":"                     \u0027port_range_max\u0027: PORT_UDP,"},{"line_number":65,"context_line":"                     \u0027direction\u0027: \u0027ingress\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_96286fe2","line":62,"range":{"start_line":62,"start_character":34,"end_line":62,"end_character":37},"updated":"2017-05-22 06:42:33.000000000","message":"Can you add a negative scenario as well ?","commit_id":"2c2f67148aaef0ad3f20579bdd05966811fa94ed"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"aee19402cafe351c707672f24d48bc1b02b873f1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            ssh_client1\u003dserver_ssh_client, ssh_client2\u003dserver_ssh_client2,"},{"line_number":60,"context_line":"            fip\u003dfip, port_num\u003dPORT_UDP, should_succeed\u003dFalse)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        rulesets \u003d [{\u0027protocol\u0027: \u0027udp\u0027,"},{"line_number":63,"context_line":"                     \u0027port_range_min\u0027: PORT_UDP,"},{"line_number":64,"context_line":"                     \u0027port_range_max\u0027: PORT_UDP,"},{"line_number":65,"context_line":"                     \u0027direction\u0027: \u0027ingress\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_d614a750","line":62,"range":{"start_line":62,"start_character":34,"end_line":62,"end_character":37},"in_reply_to":"ff0f0b1f_96286fe2","updated":"2017-05-22 06:57:55.000000000","message":"There is at L58","commit_id":"2c2f67148aaef0ad3f20579bdd05966811fa94ed"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"1855cedcf551b1211bc915944beb5f75919fab57","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            ssh_client1\u003dserver_ssh_client, ssh_client2\u003dserver_ssh_client2,"},{"line_number":60,"context_line":"            fip\u003dfip, port_num\u003dPORT_UDP, should_succeed\u003dFalse)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        rulesets \u003d [{\u0027protocol\u0027: \u0027udp\u0027,"},{"line_number":63,"context_line":"                     \u0027port_range_min\u0027: PORT_UDP,"},{"line_number":64,"context_line":"                     \u0027port_range_max\u0027: PORT_UDP,"},{"line_number":65,"context_line":"                     \u0027direction\u0027: \u0027ingress\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_25a56ea2","line":62,"range":{"start_line":62,"start_character":34,"end_line":62,"end_character":37},"in_reply_to":"ff0f0b1f_a9fc0db5","updated":"2017-05-25 09:09:18.000000000","message":"Done","commit_id":"2c2f67148aaef0ad3f20579bdd05966811fa94ed"},{"author":{"_account_id":21302,"name":"Gena","email":"gcheresh@redhat.com","username":"gcheresh"},"change_message_id":"5a66ac8107642893620f99bc753f23f8b959193b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            ssh_client1\u003dserver_ssh_client, ssh_client2\u003dserver_ssh_client2,"},{"line_number":60,"context_line":"            fip\u003dfip, port_num\u003dPORT_UDP, should_succeed\u003dFalse)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        rulesets \u003d [{\u0027protocol\u0027: \u0027udp\u0027,"},{"line_number":63,"context_line":"                     \u0027port_range_min\u0027: PORT_UDP,"},{"line_number":64,"context_line":"                     \u0027port_range_max\u0027: PORT_UDP,"},{"line_number":65,"context_line":"                     \u0027direction\u0027: \u0027ingress\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_a9fc0db5","line":62,"range":{"start_line":62,"start_character":34,"end_line":62,"end_character":37},"in_reply_to":"ff0f0b1f_d614a750","updated":"2017-05-23 07:53:21.000000000","message":"It\u0027s better use PROTO_NAME_UDP in constants.py instead of \u0027udp\u0027","commit_id":"2c2f67148aaef0ad3f20579bdd05966811fa94ed"},{"author":{"_account_id":21302,"name":"Gena","email":"gcheresh@redhat.com","username":"gcheresh"},"change_message_id":"5a66ac8107642893620f99bc753f23f8b959193b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                                     port_num\u003dPORT_UDP)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _check_connectivity_udp(self, ssh_client1, ssh_client2, fip,"},{"line_number":75,"context_line":"                                port_num, should_succeed\u003dTrue):"},{"line_number":76,"context_line":"        cmd1 \u003d (\"echo sg_check|nc -l -u -p %d  \u0026\""},{"line_number":77,"context_line":"                % port_num)"},{"line_number":78,"context_line":"        cmd2 \u003d \"echo \u0027sg\u0027 | nc -w 10 -u %s %s\" % (fip["}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_ac1bfbc7","line":75,"updated":"2017-05-23 07:53:21.000000000","message":"maybe it makes sense to send all the parameters in the function like a\u003db, then when calling the function you\u0027ll not send the parameters at all","commit_id":"2c2f67148aaef0ad3f20579bdd05966811fa94ed"},{"author":{"_account_id":21302,"name":"Gena","email":"gcheresh@redhat.com","username":"gcheresh"},"change_message_id":"0b09468fff180f352bc4422adc209aa2b58d77d0","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                                     port_num\u003dPORT_UDP)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _check_connectivity_udp(self, ssh_client1, ssh_client2, fip,"},{"line_number":75,"context_line":"                                port_num, should_succeed\u003dTrue):"},{"line_number":76,"context_line":"        cmd1 \u003d (\"echo sg_check|nc -l -u -p %d  \u0026\""},{"line_number":77,"context_line":"                % port_num)"},{"line_number":78,"context_line":"        cmd2 \u003d \"echo \u0027sg\u0027 | nc -w 10 -u %s %s\" % (fip["}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_da5141db","line":75,"in_reply_to":"ff0f0b1f_ac1bfbc7","updated":"2017-05-23 08:50:46.000000000","message":"Add docstring","commit_id":"2c2f67148aaef0ad3f20579bdd05966811fa94ed"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"18806af9fde5500425197c2a3a3cfc2e4a44c259","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            ssh_client2.exec_command(cmd1)"},{"line_number":95,"context_line":"            output \u003d ssh_client1.exec_command(cmd2)"},{"line_number":96,"context_line":"        except exceptions.SSHExecCommandFailed:"},{"line_number":97,"context_line":"            self.assertFalse(should_succeed)"},{"line_number":98,"context_line":"        if should_succeed:"},{"line_number":99,"context_line":"            self.assertIn(\u0027sg_check\u0027, output)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f1d235d_42c6ce9c","line":97,"updated":"2017-06-30 19:55:28.000000000","message":"What if should_succeed is False and this doesn\u0027t throw an exception? It looks to me like we will still pass the test.\n\nI think you want to change to assertRaises if should_succeed is False.","commit_id":"0c87f6e45b5d69126bcfe0a84048237ac6cb5ada"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2e3a973d2bf794933a323e277fbfcb861003deae","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"from tempest.common.utils.linux import remote_client"},{"line_number":16,"context_line":"from tempest.common import waiters"},{"line_number":17,"context_line":"from tempest.lib import decorators"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_15e8abdf","line":14,"updated":"2017-08-03 21:04:19.000000000","message":"There is usually one blank line between the copyright notice and the imports","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"2043ac5fb255cb4a2ee027e0a61fdd624cf5a576","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"from tempest.common.utils.linux import remote_client"},{"line_number":16,"context_line":"from tempest.common import waiters"},{"line_number":17,"context_line":"from tempest.lib import decorators"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf3e73b7_fdf91e4d","line":14,"in_reply_to":"df3967d1_15e8abdf","updated":"2017-08-07 10:12:40.000000000","message":"Done","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2e3a973d2bf794933a323e277fbfcb861003deae","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from tempest.common.utils.linux import remote_client"},{"line_number":16,"context_line":"from tempest.common import waiters"},{"line_number":17,"context_line":"from tempest.lib import decorators"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron.tests.tempest import config"},{"line_number":21,"context_line":"from neutron.tests.tempest.scenario import base"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_d59b4370","line":18,"updated":"2017-08-03 21:04:19.000000000","message":"This is a stdlib import, so it most go in the first imports section, before this one: https://docs.openstack.org/hacking/latest/user/hacking.html#import-order-template. Please see example","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"2043ac5fb255cb4a2ee027e0a61fdd624cf5a576","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from tempest.common.utils.linux import remote_client"},{"line_number":16,"context_line":"from tempest.common import waiters"},{"line_number":17,"context_line":"from tempest.lib import decorators"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron.tests.tempest import config"},{"line_number":21,"context_line":"from neutron.tests.tempest.scenario import base"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf3e73b7_dd941aeb","line":18,"in_reply_to":"df3967d1_d59b4370","updated":"2017-08-07 10:12:40.000000000","message":"Done","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2e3a973d2bf794933a323e277fbfcb861003deae","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                                     fip\u003dfip2,"},{"line_number":76,"context_line":"                                     port_num\u003dPORT_UDP)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _check_connectivity_udp(self, ssh_client1, ssh_client2, fip,"},{"line_number":79,"context_line":"                                port_num, should_succeed\u003dTrue):"},{"line_number":80,"context_line":"        \"\"\"Check connectivity to a UDP port"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_f071b577","line":78,"range":{"start_line":78,"start_character":38,"end_line":78,"end_character":62},"updated":"2017-08-03 21:04:19.000000000","message":"Maybe ssh_client_client and ssh_client_server would be this clearer","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"2043ac5fb255cb4a2ee027e0a61fdd624cf5a576","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                                     fip\u003dfip2,"},{"line_number":76,"context_line":"                                     port_num\u003dPORT_UDP)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _check_connectivity_udp(self, ssh_client1, ssh_client2, fip,"},{"line_number":79,"context_line":"                                port_num, should_succeed\u003dTrue):"},{"line_number":80,"context_line":"        \"\"\"Check connectivity to a UDP port"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bf3e73b7_bd995620","line":78,"range":{"start_line":78,"start_character":38,"end_line":78,"end_character":62},"in_reply_to":"df3967d1_f071b577","updated":"2017-08-07 10:12:40.000000000","message":"Changing to ssh_server and ssh_client","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2e3a973d2bf794933a323e277fbfcb861003deae","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        :param port_num(int): The UDP port"},{"line_number":86,"context_line":"        :param should_succeed(boolean): Should the connection be successful"},{"line_number":87,"context_line":"        \"\"\""},{"line_number":88,"context_line":"        cmd1 \u003d (\"echo sg_check|nc -l -u -p %d  \u0026\""},{"line_number":89,"context_line":"                % port_num)"},{"line_number":90,"context_line":"        cmd2 \u003d \"echo \u0027sg\u0027 | nc -w 10 -u %s %s\" % (fip["},{"line_number":91,"context_line":"                                                  \u0027floating_ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_1042f93e","line":88,"range":{"start_line":88,"start_character":25,"end_line":88,"end_character":33},"updated":"2017-08-03 21:04:19.000000000","message":"Nit: check | nc\nwould be nicer","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"2043ac5fb255cb4a2ee027e0a61fdd624cf5a576","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        :param port_num(int): The UDP port"},{"line_number":86,"context_line":"        :param should_succeed(boolean): Should the connection be successful"},{"line_number":87,"context_line":"        \"\"\""},{"line_number":88,"context_line":"        cmd1 \u003d (\"echo sg_check|nc -l -u -p %d  \u0026\""},{"line_number":89,"context_line":"                % port_num)"},{"line_number":90,"context_line":"        cmd2 \u003d \"echo \u0027sg\u0027 | nc -w 10 -u %s %s\" % (fip["},{"line_number":91,"context_line":"                                                  \u0027floating_ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf3e73b7_9d9e9205","line":88,"range":{"start_line":88,"start_character":25,"end_line":88,"end_character":33},"in_reply_to":"df3967d1_1042f93e","updated":"2017-08-07 10:12:40.000000000","message":"Done","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2e3a973d2bf794933a323e277fbfcb861003deae","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        \"\"\""},{"line_number":88,"context_line":"        cmd1 \u003d (\"echo sg_check|nc -l -u -p %d  \u0026\""},{"line_number":89,"context_line":"                % port_num)"},{"line_number":90,"context_line":"        cmd2 \u003d \"echo \u0027sg\u0027 | nc -w 10 -u %s %s\" % (fip["},{"line_number":91,"context_line":"                                                  \u0027floating_ip_address\u0027],"},{"line_number":92,"context_line":"                                                  port_num)"},{"line_number":93,"context_line":"        cmd3 \u003d \"sudo killall -q -9 nc\""}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_30f5fded","line":90,"range":{"start_line":90,"start_character":22,"end_line":90,"end_character":25},"updated":"2017-08-03 21:04:19.000000000","message":"I don\u0027t think you need the apostrophes","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"2043ac5fb255cb4a2ee027e0a61fdd624cf5a576","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        \"\"\""},{"line_number":88,"context_line":"        cmd1 \u003d (\"echo sg_check|nc -l -u -p %d  \u0026\""},{"line_number":89,"context_line":"                % port_num)"},{"line_number":90,"context_line":"        cmd2 \u003d \"echo \u0027sg\u0027 | nc -w 10 -u %s %s\" % (fip["},{"line_number":91,"context_line":"                                                  \u0027floating_ip_address\u0027],"},{"line_number":92,"context_line":"                                                  port_num)"},{"line_number":93,"context_line":"        cmd3 \u003d \"sudo killall -q -9 nc\""}],"source_content_type":"text/x-python","patch_set":7,"id":"bf3e73b7_5d882ac5","line":90,"range":{"start_line":90,"start_character":22,"end_line":90,"end_character":25},"in_reply_to":"df3967d1_30f5fded","updated":"2017-08-07 10:12:40.000000000","message":"Done","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2e3a973d2bf794933a323e277fbfcb861003deae","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            self.assertIn(\u0027sg_check\u0027, output)"},{"line_number":100,"context_line":"        else:"},{"line_number":101,"context_line":"            self.assertNotIn(\u0027sg_check\u0027, output)"},{"line_number":102,"context_line":"            ssh_client2.exec_command(cmd3)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_903829a0","line":102,"updated":"2017-08-03 21:04:19.000000000","message":"Shouldn\u0027t the kill command be executed unconditionally?","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"a06df8f371ba93282a5895f216389e5fd153cdbd","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            self.assertIn(\u0027sg_check\u0027, output)"},{"line_number":100,"context_line":"        else:"},{"line_number":101,"context_line":"            self.assertNotIn(\u0027sg_check\u0027, output)"},{"line_number":102,"context_line":"            ssh_client2.exec_command(cmd3)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f436f4f_9e18e175","line":102,"in_reply_to":"bf3e73b7_21bc18db","updated":"2017-08-08 05:41:28.000000000","message":"You have the server side but without the client side.\nOn the same host run: nc -w 10 -u 127.0.0.1 60000","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"8138a5444e83136dcb8e85313b3aba5ed5e5d7df","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            self.assertIn(\u0027sg_check\u0027, output)"},{"line_number":100,"context_line":"        else:"},{"line_number":101,"context_line":"            self.assertNotIn(\u0027sg_check\u0027, output)"},{"line_number":102,"context_line":"            ssh_client2.exec_command(cmd3)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf3e73b7_21bc18db","line":102,"in_reply_to":"bf3e73b7_7dbc0e69","updated":"2017-08-07 16:12:50.000000000","message":"Mhh, are you sure? This is what I see in a Ubuntu VM:\n\nvagrant@compute3:~$ echo sg_check | nc -l -u -p 60000  \u0026\n[1] 7035\nvagrant@compute3:~$ sg\n\nvagrant@compute3:~$ ps\n  PID TTY          TIME CMD\n 6958 pts/0    00:00:00 bash\n 7035 pts/0    00:00:00 nc\n 7038 pts/0    00:00:00 ps\nvagrant@compute3:~$ sudo killall -q -9 nc\n[1]+  Killed                  echo sg_check | nc -l -u -p 60000\nvagrant@compute3:~$","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"2043ac5fb255cb4a2ee027e0a61fdd624cf5a576","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            self.assertIn(\u0027sg_check\u0027, output)"},{"line_number":100,"context_line":"        else:"},{"line_number":101,"context_line":"            self.assertNotIn(\u0027sg_check\u0027, output)"},{"line_number":102,"context_line":"            ssh_client2.exec_command(cmd3)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf3e73b7_7dbc0e69","line":102,"in_reply_to":"df3967d1_903829a0","updated":"2017-08-07 10:12:40.000000000","message":"No.\nThe second time the server side terminates. There is no more nc process to kill.","commit_id":"1b64ec8e5a78194dc3c298d6c7d93a6a25e3d53a"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"665a5a2f10d093844178b7b48f5c006c3a384f84","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Red Hat, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f515b1d_eb8d9ed3","line":1,"updated":"2017-09-25 17:09:33.000000000","message":"You should probably put the test case into https://github.com/openstack/neutron/blob/master/neutron/tests/tempest/scenario/test_security_groups.py now that it\u0027s present in tree.","commit_id":"8d9e9e6ae56e7841471b9e30d118928b3c7fe50a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"7f69e2d11db0acc7fce52f803bf55d95c0746657","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Red Hat, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f515b1d_6bf731d5","line":1,"in_reply_to":"7f515b1d_eb8d9ed3","updated":"2017-09-27 07:34:14.000000000","message":"Done","commit_id":"8d9e9e6ae56e7841471b9e30d118928b3c7fe50a"}]}
