)]}'
{"neutron_tempest_plugin/common/utils.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"05cf87e43b22127e5e1217fea1dcd7222dac90d5","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def kill_nc_process(ssh_client):"},{"line_number":130,"context_line":"    cmd \u003d \"killall -9 -q nc\""},{"line_number":131,"context_line":"    try:"},{"line_number":132,"context_line":"        ssh_client.exec_command(cmd)"},{"line_number":133,"context_line":"    except exceptions.SSHExecCommandFailed:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_39f0ec90","line":130,"range":{"start_line":130,"start_character":20,"end_line":130,"end_character":21},"updated":"2019-09-18 16:00:27.000000000","message":"original didn\u0027t use -9, do we need to?","commit_id":"bab68d8c284fd8bb9b095f753aa84dc53967635c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"200c0e844b2f2a4a6b4e3149d962ba4b7d9185f4","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def kill_nc_process(ssh_client):"},{"line_number":130,"context_line":"    cmd \u003d \"killall -9 -q nc\""},{"line_number":131,"context_line":"    try:"},{"line_number":132,"context_line":"        ssh_client.exec_command(cmd)"},{"line_number":133,"context_line":"    except exceptions.SSHExecCommandFailed:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_a0bc8adc","line":130,"range":{"start_line":130,"start_character":20,"end_line":130,"end_character":21},"in_reply_to":"3fa7e38b_0b2ee842","updated":"2019-09-19 15:36:14.000000000","message":"Was killing it part of the problem?  If not I\u0027d leave it alone since you\u0027re just moving the code.","commit_id":"bab68d8c284fd8bb9b095f753aa84dc53967635c"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"52089aed38853b4377cd27182302380b58ad2351","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def kill_nc_process(ssh_client):"},{"line_number":130,"context_line":"    cmd \u003d \"killall -9 -q nc\""},{"line_number":131,"context_line":"    try:"},{"line_number":132,"context_line":"        ssh_client.exec_command(cmd)"},{"line_number":133,"context_line":"    except exceptions.SSHExecCommandFailed:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_0b2ee842","line":130,"range":{"start_line":130,"start_character":20,"end_line":130,"end_character":21},"in_reply_to":"3fa7e38b_39f0ec90","updated":"2019-09-19 10:53:35.000000000","message":"As this is test only I\u0027m ok with killing nc harder without gentle ask :) But if you disagree I can do SIGTERM instead.","commit_id":"bab68d8c284fd8bb9b095f753aa84dc53967635c"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"c55aec78c388326d7d9e265b669de1bdacbe0473","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def kill_nc_process(ssh_client):"},{"line_number":130,"context_line":"    cmd \u003d \"killall -9 -q nc\""},{"line_number":131,"context_line":"    try:"},{"line_number":132,"context_line":"        ssh_client.exec_command(cmd)"},{"line_number":133,"context_line":"    except exceptions.SSHExecCommandFailed:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_32ae9e98","line":130,"range":{"start_line":130,"start_character":20,"end_line":130,"end_character":21},"in_reply_to":"3fa7e38b_a0bc8adc","updated":"2019-09-20 11:40:03.000000000","message":"Ok","commit_id":"bab68d8c284fd8bb9b095f753aa84dc53967635c"}],"neutron_tempest_plugin/scenario/test_qos.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"05cf87e43b22127e5e1217fea1dcd7222dac90d5","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                file\u003dself.FILE_PATH)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _check_bw(self, ssh_client, host, port, expected_bw\u003dLIMIT_BYTES_SEC):"},{"line_number":95,"context_line":"        tutils.kill_nc_process(ssh_client)"},{"line_number":96,"context_line":"        cmd \u003d (\"(nc -ll -p %(port)d \u003c %(file_path)s \u003e /dev/null \u0026)\" % {"},{"line_number":97,"context_line":"                \u0027port\u0027: port, \u0027file_path\u0027: self.FILE_PATH})"},{"line_number":98,"context_line":"        ssh_client.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_b904dc7c","line":95,"range":{"start_line":95,"start_character":8,"end_line":95,"end_character":14},"updated":"2019-09-18 16:00:27.000000000","message":"s/utils, tutils is tempest.common.utils","commit_id":"bab68d8c284fd8bb9b095f753aa84dc53967635c"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"52089aed38853b4377cd27182302380b58ad2351","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                file\u003dself.FILE_PATH)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _check_bw(self, ssh_client, host, port, expected_bw\u003dLIMIT_BYTES_SEC):"},{"line_number":95,"context_line":"        tutils.kill_nc_process(ssh_client)"},{"line_number":96,"context_line":"        cmd \u003d (\"(nc -ll -p %(port)d \u003c %(file_path)s \u003e /dev/null \u0026)\" % {"},{"line_number":97,"context_line":"                \u0027port\u0027: port, \u0027file_path\u0027: self.FILE_PATH})"},{"line_number":98,"context_line":"        ssh_client.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_cb277064","line":95,"range":{"start_line":95,"start_character":8,"end_line":95,"end_character":14},"in_reply_to":"3fa7e38b_b904dc7c","updated":"2019-09-19 10:53:35.000000000","message":"My bad. Sorry. thanks for pointing this out","commit_id":"bab68d8c284fd8bb9b095f753aa84dc53967635c"}],"neutron_tempest_plugin/scenario/test_security_groups.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"63418be511e2dacc858d535e68e6d61238ae0d7f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    required_extensions \u003d [\u0027router\u0027, \u0027security-group\u0027]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @staticmethod"},{"line_number":35,"context_line":"    def _kill_nc_process(ssh_client):"},{"line_number":36,"context_line":"        cmd \u003d \"killall -9 -q nc\""},{"line_number":37,"context_line":"        try:"},{"line_number":38,"context_line":"            ssh_client.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_3dabff1d","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":24},"updated":"2019-09-18 11:28:13.000000000","message":"the same method is already in https://github.com/openstack/neutron-tempest-plugin/blob/31993d50fd449e2d3ba02f3d4d94989130cd2118/neutron_tempest_plugin/scenario/test_qos.py#L96\n\nMaybe You can move it to some \"more common\" place and reuse in both places?","commit_id":"87c647c08aa9a18e9520bfbbeafac643af3170f5"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"ddac5fc22eff71db962e50aa4ba06653cd2e6a22","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    required_extensions \u003d [\u0027router\u0027, \u0027security-group\u0027]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @staticmethod"},{"line_number":35,"context_line":"    def _kill_nc_process(ssh_client):"},{"line_number":36,"context_line":"        cmd \u003d \"killall -9 -q nc\""},{"line_number":37,"context_line":"        try:"},{"line_number":38,"context_line":"            ssh_client.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_9d0a3324","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":24},"in_reply_to":"3fa7e38b_3dabff1d","updated":"2019-09-18 11:32:19.000000000","message":"+1","commit_id":"87c647c08aa9a18e9520bfbbeafac643af3170f5"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"ddac5fc22eff71db962e50aa4ba06653cd2e6a22","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        except exceptions.SSHExecCommandFailed:"},{"line_number":40,"context_line":"            pass"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @staticmethod"},{"line_number":43,"context_line":"    def _spawn_http_server(ssh_client, port):"},{"line_number":44,"context_line":"        cmd \u003d (\"(echo -e \u0027HTTP/1.1 200 OK\\r\\n\u0027; echo \u0027ok\u0027) | sudo nc -lp %d \u0026\""},{"line_number":45,"context_line":"               % port)"},{"line_number":46,"context_line":"        ssh_client.exec_command(cmd)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _test_http_server(self, ssh_client, url, should_pass\u003dTrue):"},{"line_number":49,"context_line":"        cmd \u003d \"curl %s --retry 3 --connect-timeout 2\" % url"},{"line_number":50,"context_line":"        return ssh_client.exec_command(cmd)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _verify_http_connection(self, ssh_client, ssh_server,"},{"line_number":53,"context_line":"                                test_ip, test_port, should_pass\u003dTrue):"},{"line_number":54,"context_line":"        \"\"\"Verify if HTTP connection works using remote hosts."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        :param ssh.Client ssh_client: The client host active SSH client."},{"line_number":57,"context_line":"        :param ssh.Client ssh_server: The HTTP server host active SSH client."},{"line_number":58,"context_line":"        :param string test_ip: IP address of HTTP server"},{"line_number":59,"context_line":"        :param string test_port: Port of HTTP server"},{"line_number":60,"context_line":"        :param bool should_pass: Wheter test should pass or not."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        :return: if passed or not"},{"line_number":63,"context_line":"        :rtype: bool"},{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        self._kill_nc_process(ssh_server)"},{"line_number":66,"context_line":"        url \u003d \u0027http://%s:%d\u0027 % (test_ip, test_port)"},{"line_number":67,"context_line":"        self._spawn_http_server(ssh_server, port\u003dtest_port)"},{"line_number":68,"context_line":"        try:"},{"line_number":69,"context_line":"            ret \u003d self._test_http_server(ssh_client, url)"},{"line_number":70,"context_line":"            if should_pass:"},{"line_number":71,"context_line":"                self.assertIn(\u0027ok\u0027, ret)"},{"line_number":72,"context_line":"                return"},{"line_number":73,"context_line":"            self.assertNotIn(\u0027ok\u0027, ret)"},{"line_number":74,"context_line":"        except Exception as e:"},{"line_number":75,"context_line":"            if not should_pass:"},{"line_number":76,"context_line":"                return"},{"line_number":77,"context_line":"            raise e"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_2f32e6f2","line":76,"range":{"start_line":42,"start_character":0,"end_line":76,"end_character":22},"updated":"2019-09-18 11:32:19.000000000","message":"I can move this one also to some common place.","commit_id":"87c647c08aa9a18e9520bfbbeafac643af3170f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"63418be511e2dacc858d535e68e6d61238ae0d7f","unresolved":false,"context_lines":[{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        # Create remote and test security groups"},{"line_number":352,"context_line":"        for i in range(0, 2):"},{"line_number":353,"context_line":"            secgroups.append("},{"line_number":354,"context_line":"                self.os_primary.network_client.create_security_group("},{"line_number":355,"context_line":"                    name\u003d\u0027secgrp-%d\u0027 % i))"},{"line_number":356,"context_line":"            # add cleanups"},{"line_number":357,"context_line":"            self.security_groups.append(secgroups[-1][\u0027security_group\u0027])"},{"line_number":358,"context_line":"            # configure sec groups to support SSH connectivity"},{"line_number":359,"context_line":"            self.create_loginable_secgroup_rule("},{"line_number":360,"context_line":"                secgroup_id\u003dsecgroups[-1][\u0027security_group\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_7d5f3741","line":357,"range":{"start_line":353,"start_character":12,"end_line":357,"end_character":72},"updated":"2019-09-18 11:28:13.000000000","message":"if You will use self.create_security_group() - it\u0027s implemented in https://github.com/openstack/neutron-tempest-plugin/blob/c89a00a3ba907d6b67831be4ead64bb80c9aed2b/neutron_tempest_plugin/api/base.py#L817\nYou will not need to deal with cleanup.","commit_id":"87c647c08aa9a18e9520bfbbeafac643af3170f5"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"ddac5fc22eff71db962e50aa4ba06653cd2e6a22","unresolved":false,"context_lines":[{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        # Create remote and test security groups"},{"line_number":352,"context_line":"        for i in range(0, 2):"},{"line_number":353,"context_line":"            secgroups.append("},{"line_number":354,"context_line":"                self.os_primary.network_client.create_security_group("},{"line_number":355,"context_line":"                    name\u003d\u0027secgrp-%d\u0027 % i))"},{"line_number":356,"context_line":"            # add cleanups"},{"line_number":357,"context_line":"            self.security_groups.append(secgroups[-1][\u0027security_group\u0027])"},{"line_number":358,"context_line":"            # configure sec groups to support SSH connectivity"},{"line_number":359,"context_line":"            self.create_loginable_secgroup_rule("},{"line_number":360,"context_line":"                secgroup_id\u003dsecgroups[-1][\u0027security_group\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_8f08ba28","line":357,"range":{"start_line":353,"start_character":12,"end_line":357,"end_character":72},"in_reply_to":"3fa7e38b_7d5f3741","updated":"2019-09-18 11:32:19.000000000","message":"+1, gonna use","commit_id":"87c647c08aa9a18e9520bfbbeafac643af3170f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"63418be511e2dacc858d535e68e6d61238ae0d7f","unresolved":false,"context_lines":[{"line_number":400,"context_line":"            rule_list, secgroup_id\u003dsecgroups[1][\u0027security_group\u0027][\u0027id\u0027])"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        # verify that conections are working"},{"line_number":403,"context_line":"        for port in range(80, 84):"},{"line_number":404,"context_line":"            self._verify_http_connection("},{"line_number":405,"context_line":"                ssh_clients[0],"},{"line_number":406,"context_line":"                ssh_clients[2],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_9d21d3b7","line":403,"range":{"start_line":403,"start_character":30,"end_line":403,"end_character":32},"updated":"2019-09-18 11:28:13.000000000","message":"how this should works as You above added port ranges 80-81 and 82-83 ?","commit_id":"87c647c08aa9a18e9520bfbbeafac643af3170f5"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"ddac5fc22eff71db962e50aa4ba06653cd2e6a22","unresolved":false,"context_lines":[{"line_number":400,"context_line":"            rule_list, secgroup_id\u003dsecgroups[1][\u0027security_group\u0027][\u0027id\u0027])"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        # verify that conections are working"},{"line_number":403,"context_line":"        for port in range(80, 84):"},{"line_number":404,"context_line":"            self._verify_http_connection("},{"line_number":405,"context_line":"                ssh_clients[0],"},{"line_number":406,"context_line":"                ssh_clients[2],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_6f38ded2","line":403,"range":{"start_line":403,"start_character":30,"end_line":403,"end_character":32},"in_reply_to":"3fa7e38b_9d21d3b7","updated":"2019-09-18 11:32:19.000000000","message":"above I add two rules:\nTCP 80-81\nTCP 82-83\n\n\nSo the range will use all ports configured.\n\u003e\u003e\u003e for i in range(80,84): print(i)\n... \n80\n81\n82\n83\n\u003e\u003e\u003e \n\nWe need at least two rules with the same remote_group_id because of the bug in commit message.","commit_id":"87c647c08aa9a18e9520bfbbeafac643af3170f5"}]}
