)]}'
{"octavia_tempest_plugin/tests/api/v2/test_amphora.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"056835c7910b38f74511b6a15578ecf692a4b7d5","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        cls._setup_lb_network_kwargs(lb_kwargs)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        lb \u003d cls.mem_lb_client.create_loadbalancer("},{"line_number":52,"context_line":"            **lb_kwargs)"},{"line_number":53,"context_line":"        cls.lb_id \u003d lb[const.ID]"},{"line_number":54,"context_line":"        cls.addClassResourceCleanup("},{"line_number":55,"context_line":"            cls.mem_lb_client.cleanup_loadbalancer, cls.lb_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_59827cc9","line":52,"updated":"2020-05-19 19:11:54.000000000","message":"nit: why?","commit_id":"379f3061e67e7268c3097d36d46b118999a7e722"}],"octavia_tempest_plugin/tests/scenario/v2/test_ipv6_traffic_ops.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"6d5a4be67ae97e02014fe171603b75eb985f680f","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                                CONF.load_balancer.build_timeout)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def _test_ipv6_vip_mixed_ipv4_ipv6_members_traffic("},{"line_number":135,"context_line":"        self, protocol, protocol_port, persistent\u003dTrue):"},{"line_number":136,"context_line":"        \"\"\"Tests traffic through a loadbalancer with IPv4 and IPv6 members."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        * Set up members on a loadbalancer."}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_0a0d248f","line":135,"updated":"2020-04-02 07:05:56.000000000","message":"pep8: E125 continuation line with same indent as next logical line","commit_id":"c8e394f7b16a8ab5b155c95466836cac13f03aca"}],"octavia_tempest_plugin/tests/scenario/v2/test_listener.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8bcdac66da536597e7209d4f7345315dfb9311e8","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            pool1, pool2 \u003d self._create_pools("},{"line_number":156,"context_line":"                const.HTTP, const.LB_ALGORITHM_SOURCE_IP_PORT)"},{"line_number":157,"context_line":"            self._test_listener_CRUD(const.HTTP, pool1, pool2)"},{"line_number":158,"context_line":"        except exceptions.NotImplemented as e:"},{"line_number":159,"context_line":"            if algorithm !\u003d const.LB_ALGORITHM_SOURCE_IP_PORT:"},{"line_number":160,"context_line":"                raise"},{"line_number":161,"context_line":"            message \u003d (\"The configured provider driver \u0027{driver}\u0027 \""}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_eeb935cc","line":158,"updated":"2020-08-04 04:55:27.000000000","message":"pep8: F821 undefined name \u0027exceptions\u0027","commit_id":"8cff96ea0d6e1501b9a53b9b4708aa7d08625eaa"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8bcdac66da536597e7209d4f7345315dfb9311e8","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                const.HTTP, const.LB_ALGORITHM_SOURCE_IP_PORT)"},{"line_number":157,"context_line":"            self._test_listener_CRUD(const.HTTP, pool1, pool2)"},{"line_number":158,"context_line":"        except exceptions.NotImplemented as e:"},{"line_number":159,"context_line":"            if algorithm !\u003d const.LB_ALGORITHM_SOURCE_IP_PORT:"},{"line_number":160,"context_line":"                raise"},{"line_number":161,"context_line":"            message \u003d (\"The configured provider driver \u0027{driver}\u0027 \""},{"line_number":162,"context_line":"                       \"does not support a feature required for this \""}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_cebef1b2","line":159,"updated":"2020-08-04 04:55:27.000000000","message":"pep8: F821 undefined name \u0027algorithm\u0027","commit_id":"8cff96ea0d6e1501b9a53b9b4708aa7d08625eaa"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8bcdac66da536597e7209d4f7345315dfb9311e8","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                       \"test.\".format(driver\u003dCONF.load_balancer.provider))"},{"line_number":164,"context_line":"            if hasattr(e, \u0027resp_body\u0027):"},{"line_number":165,"context_line":"                message \u003d e.resp_body.get(\u0027faultstring\u0027, message)"},{"line_number":166,"context_line":"            raise testtools.TestCase.skipException(message)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    @decorators.idempotent_id(\u00276211f8ad-622d-404d-b199-8c2eb55ab340\u0027)"},{"line_number":169,"context_line":"    def test_tcp_source_ip_port_listener_CRUD(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_2eb04ddd","line":166,"updated":"2020-08-04 04:55:27.000000000","message":"pep8: F821 undefined name \u0027testtools\u0027","commit_id":"8cff96ea0d6e1501b9a53b9b4708aa7d08625eaa"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8bcdac66da536597e7209d4f7345315dfb9311e8","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            pool1, pool2 \u003d self._create_pools("},{"line_number":172,"context_line":"                const.TCP, const.LB_ALGORITHM_SOURCE_IP_PORT)"},{"line_number":173,"context_line":"            self._test_listener_CRUD(const.TCP, pool1, pool2)"},{"line_number":174,"context_line":"        except exceptions.NotImplemented as e:"},{"line_number":175,"context_line":"            if algorithm !\u003d const.LB_ALGORITHM_SOURCE_IP_PORT:"},{"line_number":176,"context_line":"                raise"},{"line_number":177,"context_line":"            message \u003d (\"The configured provider driver \u0027{driver}\u0027 \""}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_0eb589cd","line":174,"updated":"2020-08-04 04:55:27.000000000","message":"pep8: F821 undefined name \u0027exceptions\u0027","commit_id":"8cff96ea0d6e1501b9a53b9b4708aa7d08625eaa"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8bcdac66da536597e7209d4f7345315dfb9311e8","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                const.TCP, const.LB_ALGORITHM_SOURCE_IP_PORT)"},{"line_number":173,"context_line":"            self._test_listener_CRUD(const.TCP, pool1, pool2)"},{"line_number":174,"context_line":"        except exceptions.NotImplemented as e:"},{"line_number":175,"context_line":"            if algorithm !\u003d const.LB_ALGORITHM_SOURCE_IP_PORT:"},{"line_number":176,"context_line":"                raise"},{"line_number":177,"context_line":"            message \u003d (\"The configured provider driver \u0027{driver}\u0027 \""},{"line_number":178,"context_line":"                       \"does not support a feature required for this \""}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_6ecd2565","line":175,"updated":"2020-08-04 04:55:27.000000000","message":"pep8: F821 undefined name \u0027algorithm\u0027","commit_id":"8cff96ea0d6e1501b9a53b9b4708aa7d08625eaa"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8bcdac66da536597e7209d4f7345315dfb9311e8","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                       \"test.\".format(driver\u003dCONF.load_balancer.provider))"},{"line_number":180,"context_line":"            if hasattr(e, \u0027resp_body\u0027):"},{"line_number":181,"context_line":"                message \u003d e.resp_body.get(\u0027faultstring\u0027, message)"},{"line_number":182,"context_line":"            raise testtools.TestCase.skipException(message)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    @decorators.idempotent_id(\u00273f9a2de9-5012-437d-a907-a25e1f68ccfb\u0027)"},{"line_number":185,"context_line":"    def test_udp_source_ip_port_listener_CRUD(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_4ecae14d","line":182,"updated":"2020-08-04 04:55:27.000000000","message":"pep8: F821 undefined name \u0027testtools\u0027","commit_id":"8cff96ea0d6e1501b9a53b9b4708aa7d08625eaa"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8bcdac66da536597e7209d4f7345315dfb9311e8","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            pool1, pool2 \u003d self._create_pools("},{"line_number":188,"context_line":"                const.UDP, const.LB_ALGORITHM_SOURCE_IP_PORT)"},{"line_number":189,"context_line":"            self._test_listener_CRUD(const.UDP, pool1, pool2)"},{"line_number":190,"context_line":"        except exceptions.NotImplemented as e:"},{"line_number":191,"context_line":"            if algorithm !\u003d const.LB_ALGORITHM_SOURCE_IP_PORT:"},{"line_number":192,"context_line":"                raise"},{"line_number":193,"context_line":"            message \u003d (\"The configured provider driver \u0027{driver}\u0027 \""}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_aec3bd37","line":190,"updated":"2020-08-04 04:55:27.000000000","message":"pep8: F821 undefined name \u0027exceptions\u0027","commit_id":"8cff96ea0d6e1501b9a53b9b4708aa7d08625eaa"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8bcdac66da536597e7209d4f7345315dfb9311e8","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                const.UDP, const.LB_ALGORITHM_SOURCE_IP_PORT)"},{"line_number":189,"context_line":"            self._test_listener_CRUD(const.UDP, pool1, pool2)"},{"line_number":190,"context_line":"        except exceptions.NotImplemented as e:"},{"line_number":191,"context_line":"            if algorithm !\u003d const.LB_ALGORITHM_SOURCE_IP_PORT:"},{"line_number":192,"context_line":"                raise"},{"line_number":193,"context_line":"            message \u003d (\"The configured provider driver \u0027{driver}\u0027 \""},{"line_number":194,"context_line":"                       \"does not support a feature required for this \""}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_8ec0792c","line":191,"updated":"2020-08-04 04:55:27.000000000","message":"pep8: F821 undefined name \u0027algorithm\u0027","commit_id":"8cff96ea0d6e1501b9a53b9b4708aa7d08625eaa"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8bcdac66da536597e7209d4f7345315dfb9311e8","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                       \"test.\".format(driver\u003dCONF.load_balancer.provider))"},{"line_number":196,"context_line":"            if hasattr(e, \u0027resp_body\u0027):"},{"line_number":197,"context_line":"                message \u003d e.resp_body.get(\u0027faultstring\u0027, message)"},{"line_number":198,"context_line":"            raise testtools.TestCase.skipException(message)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def _test_listener_CRUD(self, protocol, pool1_id, pool2_id):"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_eede550f","line":198,"updated":"2020-08-04 04:55:27.000000000","message":"pep8: F821 undefined name \u0027testtools\u0027","commit_id":"8cff96ea0d6e1501b9a53b9b4708aa7d08625eaa"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8bcdac66da536597e7209d4f7345315dfb9311e8","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            raise testtools.TestCase.skipException(message)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def _test_listener_CRUD(self, protocol, pool1_id, pool2_id):"},{"line_number":202,"context_line":"        \"\"\"Tests listener create, read, update, delete"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        * Create a fully populated listener."}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_cee391d8","line":201,"updated":"2020-08-04 04:55:27.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"8cff96ea0d6e1501b9a53b9b4708aa7d08625eaa"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"707ad75fda40798404ce829697ad07d6aaa3dbaf","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                const.HTTP, const.LB_ALGORITHM_SOURCE_IP_PORT)"},{"line_number":159,"context_line":"            self._test_listener_CRUD(const.HTTP, pool1, pool2)"},{"line_number":160,"context_line":"        except exceptions.NotImplemented as e:"},{"line_number":161,"context_line":"            if algorithm !\u003d const.LB_ALGORITHM_SOURCE_IP_PORT:"},{"line_number":162,"context_line":"                raise"},{"line_number":163,"context_line":"            message \u003d (\"The configured provider driver \u0027{driver}\u0027 \""},{"line_number":164,"context_line":"                       \"does not support a feature required for this \""}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_05a287fd","line":161,"updated":"2020-08-04 07:41:01.000000000","message":"pep8: F821 undefined name \u0027algorithm\u0027","commit_id":"9f332a92fe29105a1bab5889fe425f507c90df3a"}],"octavia_tempest_plugin/tests/validators.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"724263a4dd7094081838923b451f4ccf3c296013","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    def make_request("},{"line_number":163,"context_line":"        self, vip_address, protocol\u003dconst.HTTP, HTTPS_verify\u003dTrue,"},{"line_number":164,"context_line":"        protocol_port\u003d80, requests_session\u003dNone, client_cert_path\u003dNone,"},{"line_number":165,"context_line":"        CA_certs_path\u003dNone, request_timeout\u003d2, source_port\u003dNone):"},{"line_number":166,"context_line":"        \"\"\"Make a request to a VIP."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        :param vip_address: The VIP address to test."}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_98dff238","line":165,"updated":"2020-04-01 00:51:14.000000000","message":"E125 continuation line with same indent as next logical line","commit_id":"8dff18939d01218fb9fe0355e0f1464a8a21bf9a"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"056835c7910b38f74511b6a15578ecf692a4b7d5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 GoDaddy"},{"line_number":2,"context_line":"# Copyright 2017 Catalyst IT Ltd"},{"line_number":3,"context_line":"# Copyright 2018 Rackspace US Inc.  All rights reserved."},{"line_number":4,"context_line":"# Copyright 2020 Red Hat, Inc. All rights reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":7,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_19f3e475","line":4,"updated":"2020-05-19 19:11:54.000000000","message":"Don\u0027t typically update this","commit_id":"379f3061e67e7268c3097d36d46b118999a7e722"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"fd6fb950e4eeae3e7981d07075792e89bddfd746","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            except requests.exceptions.Timeout:"},{"line_number":106,"context_line":"                # Don\u0027t sleep as we have already waited the interval."},{"line_number":107,"context_line":"                LOG.info(\u0027Request for {} timed out. Retrying.\u0027.format(URL))"},{"line_number":108,"context_line":"            except (exceptions.InvalidHttpSuccessCode,"},{"line_number":109,"context_line":"                    exceptions.InvalidHTTPResponseBody,"},{"line_number":110,"context_line":"                    requests.exceptions.SSLError) as e:"},{"line_number":111,"context_line":"                if requests_session is None:"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_a86c1cce","line":108,"updated":"2020-05-19 21:31:49.000000000","message":"pep8: F841 local variable \u0027e\u0027 is assigned to but never used","commit_id":"379f3061e67e7268c3097d36d46b118999a7e722"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"056835c7910b38f74511b6a15578ecf692a4b7d5","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                LOG.info(\u0027Request for {} timed out. Retrying.\u0027.format(URL))"},{"line_number":108,"context_line":"            except (exceptions.InvalidHttpSuccessCode,"},{"line_number":109,"context_line":"                    exceptions.InvalidHTTPResponseBody,"},{"line_number":110,"context_line":"                    requests.exceptions.SSLError) as e:"},{"line_number":111,"context_line":"                if requests_session is None:"},{"line_number":112,"context_line":"                    session.close()"},{"line_number":113,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_f9f55058","line":110,"range":{"start_line":110,"start_character":49,"end_line":110,"end_character":54},"updated":"2020-05-19 19:11:54.000000000","message":"unused","commit_id":"379f3061e67e7268c3097d36d46b118999a7e722"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"056835c7910b38f74511b6a15578ecf692a4b7d5","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            # catch and skip already used ports on the host"},{"line_number":142,"context_line":"            try:"},{"line_number":143,"context_line":"                if source_port:"},{"line_number":144,"context_line":"                    sock.bind((\u0027\u0027, source_port))"},{"line_number":145,"context_line":"                else:"},{"line_number":146,"context_line":"                    sock.bind((\u0027\u0027, port_number))"},{"line_number":147,"context_line":"            except OSError as e:"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_dc34bae0","line":144,"updated":"2020-05-19 19:11:54.000000000","message":"This loop scares me a little now since it\u0027s different than where it was copied from.  if \u0027source_port\u0027 is passed this will just keep looping if it\u0027s EADDRINUSE.  Maybe that won\u0027t happen though?","commit_id":"379f3061e67e7268c3097d36d46b118999a7e722"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"7878051fe8753247b1f9b2dcdf040b46804ed54b","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            # catch and skip already used ports on the host"},{"line_number":142,"context_line":"            try:"},{"line_number":143,"context_line":"                if source_port:"},{"line_number":144,"context_line":"                    sock.bind((\u0027\u0027, source_port))"},{"line_number":145,"context_line":"                else:"},{"line_number":146,"context_line":"                    sock.bind((\u0027\u0027, port_number))"},{"line_number":147,"context_line":"            except OSError as e:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_dc2d7d47","line":144,"in_reply_to":"ff570b3c_dc34bae0","updated":"2020-07-27 23:38:43.000000000","message":"Yeah, this was one of the bugs in the old test that made it an invalid test. With OVN you can\u0027t change the source port as it is part of the load balancing algorithm.\nThis code does put a burden the test developers to use a unique source port for each test. I guess I could just fail out the test if it is in use to stop this from looping.","commit_id":"379f3061e67e7268c3097d36d46b118999a7e722"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"056835c7910b38f74511b6a15578ecf692a4b7d5","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        \"\"\""},{"line_number":200,"context_line":"        # Note: We are using HTTP as the TCP protocol check to simplify"},{"line_number":201,"context_line":"        #       the test setup. HTTP is a TCP based protocol."},{"line_number":202,"context_line":"        if protocol \u003d\u003d const.HTTP or protocol \u003d\u003d const.TCP:"},{"line_number":203,"context_line":"            url \u003d \"http://{0}{1}{2}\".format("},{"line_number":204,"context_line":"                vip_address, \u0027:\u0027 if protocol_port else \u0027\u0027,"},{"line_number":205,"context_line":"                protocol_port or \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_393d08dd","line":202,"updated":"2020-05-19 19:11:54.000000000","message":"Can be \u0027if protocol in [...]:\u0027 same below","commit_id":"379f3061e67e7268c3097d36d46b118999a7e722"}]}
