)]}'
{"octavia_tempest_plugin/common/constants.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3726afad074daca89ec4c65386829079449748d8","unresolved":false,"context_lines":[{"line_number":220,"context_line":"AMPHORA_PROVIDERS \u003d [\u0027amphora\u0027, \u0027amphorav2\u0027, \u0027octavia\u0027]"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"# Providers"},{"line_number":223,"context_line":"OVN_PROVIDER \u003d \u0027ovn\u0027"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"# Flavor capabilities"},{"line_number":226,"context_line":"LOADBALANCER_TOPOLOGY \u003d \u0027loadbalancer_topology\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_ab60f4d1","line":223,"updated":"2020-01-15 19:35:16.000000000","message":"octavia-tempest-plugin should not have third party provider specific code in it. This should be removed.","commit_id":"89fca939fcfd9db5fce72e2552f00eb699a93b9b"}],"octavia_tempest_plugin/tests/scenario/v2/test_member.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"46b14e3716190525457779ebf813287d9e6a70e1","unresolved":false,"context_lines":[{"line_number":27,"context_line":"CONF \u003d config.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class MemberScenarioBaseTest(test_base.LoadBalancerBaseTest):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def resource_setup(cls, ip_version\u003dNone, protocol\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_6a7cc51e","line":30,"updated":"2019-09-25 20:46:24.000000000","message":"Similar comment to my other review, you could put this here:\n\n    ip_version \u003d 4\n    procotol \u003d const.HTTP\n    member_address \u003d 192.0.2.1\n\nThen the sub-classes are just a few lines possibly?  At least in theory.","commit_id":"25573ee6831bac74e700bf9817519e6e1c370f36"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"1e4001f353829a5f86118f9fb1643082a40ed0b2","unresolved":false,"context_lines":[{"line_number":27,"context_line":"CONF \u003d config.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class MemberScenarioBaseTest(test_base.LoadBalancerBaseTest):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def resource_setup(cls, ip_version\u003dNone, protocol\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_adeabad4","line":30,"in_reply_to":"3fa7e38b_6a7cc51e","updated":"2019-09-27 06:34:05.000000000","message":"Thanks Brian,\ndone","commit_id":"25573ee6831bac74e700bf9817519e6e1c370f36"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bfc75b69e01daf375687d94d471b57898bc9f23f","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            faultstring \u003d e.resp_body.get(\u0027faultstring\u0027, \u0027\u0027)"},{"line_number":77,"context_line":"            if (\"Invalid input for field/attribute protocol.\" in faultstring"},{"line_number":78,"context_line":"                    and \"Value should be one of:\" in faultstring):"},{"line_number":79,"context_line":"                raise cls.skipException(\"Skipping unsupported protocol\")"},{"line_number":80,"context_line":"            raise e"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        cls.listener_id \u003d listener[const.ID]"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_27231e07","line":79,"updated":"2019-11-04 22:25:28.000000000","message":"I am a bit uncomfortable skipping member testing due to a listener configuration error. I think it would be better to fail out here. If there is a concern that someone is going to set a bad L4 protocol we should fix the tempest oslo config parser to only allow enumerated protocols here:\nhttps://github.com/openstack/octavia-tempest-plugin/blob/master/octavia_tempest_plugin/config.py#L208\nYou can do this by adding the \"choices\" parameter and set it to a list of valid protocol names in a constants file.\nExample: https://github.com/openstack/octavia/blob/master/octavia/common/config.py#L425","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"6f339296c4b0fd772e92eca4074d4e680f97562f","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            faultstring \u003d e.resp_body.get(\u0027faultstring\u0027, \u0027\u0027)"},{"line_number":77,"context_line":"            if (\"Invalid input for field/attribute protocol.\" in faultstring"},{"line_number":78,"context_line":"                    and \"Value should be one of:\" in faultstring):"},{"line_number":79,"context_line":"                raise cls.skipException(\"Skipping unsupported protocol\")"},{"line_number":80,"context_line":"            raise e"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        cls.listener_id \u003d listener[const.ID]"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_5ee2e702","line":79,"in_reply_to":"3fa7e38b_27231e07","updated":"2019-11-20 13:03:03.000000000","message":"This code was used to skip UDP listeners in octavia branches that don\u0027t support UDP.\nNow api_version is checked, and UDP listeners are created only for api_version\u003e\u003d2.1 (rocky and later)","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bfc75b69e01daf375687d94d471b57898bc9f23f","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                                CONF.load_balancer.build_timeout)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class MemberScenarioTest(MemberScenarioBaseTest):"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    @decorators.idempotent_id(\u002715c8c3e3-569c-4029-95df-a9f72049e267\u0027)"},{"line_number":118,"context_line":"    def test_member_CRUD(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_f9c5aa8e","line":115,"updated":"2019-11-04 22:25:28.000000000","message":"The side effect of this is that each of these classes will run resource_setup. So, previously with methods, the resource setup would run once.\nNow it runs five times:\n{1} octavia_tempest_plugin.tests.scenario.v2.test_member.MixedUDPIPv6VIPIPv4MemberScenarioTest.test_mixed_member_create [0.183241s] ... ok\n{2} octavia_tempest_plugin.tests.scenario.v2.test_member.MixedHTTPIPv4VIPIPv6MemberScenarioTest.test_mixed_member_create [10.575223s] ... ok\n{3} octavia_tempest_plugin.tests.scenario.v2.test_member.MixedHTTPIPv6VIPIPv4MemberScenarioTest.test_mixed_member_create [10.605048s] ... ok\n{0} octavia_tempest_plugin.tests.scenario.v2.test_member.MemberScenarioTest.test_member_CRUD [16.344026s] ... ok\n######################### Ran member setup\n######################### Ran member setup\n######################### Ran member setup\n{0} octavia_tempest_plugin.tests.scenario.v2.test_member.MixedUDPIPv4VIPIPv6MemberScenarioTest.test_mixed_member_create [0.184318s] ... ok\n######################### Ran member setup\n######################### Ran member setup\n\nTempest runs tests concurrently by class, so each one of these classes will launch their own test thread/process. In the example paste above you can see I have my tempest concurrency set to 4 (See the {#}\u0027s). Each of these will run their own resource_setup. This can lead to a lot of resource usage as each one will create a load balancer. It will also slow down the test run.","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"6f339296c4b0fd772e92eca4074d4e680f97562f","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                                CONF.load_balancer.build_timeout)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class MemberScenarioTest(MemberScenarioBaseTest):"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    @decorators.idempotent_id(\u002715c8c3e3-569c-4029-95df-a9f72049e267\u0027)"},{"line_number":118,"context_line":"    def test_member_CRUD(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_1ee8efdc","line":115,"in_reply_to":"3fa7e38b_f9c5aa8e","updated":"2019-11-20 13:03:03.000000000","message":"Done. Test now contains only one class with different test_* functions that uses shared resources (i.e 1 LB for n listeners)","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bfc75b69e01daf375687d94d471b57898bc9f23f","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    lb_ip_version \u003d 4"},{"line_number":282,"context_line":"    protocol \u003d const.UDP"},{"line_number":283,"context_line":"    member_address \u003d \u00272001:db8:0:0:0:0:0:1\u0027"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    @classmethod"},{"line_number":286,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_c78ecacf","line":283,"updated":"2019-11-04 22:25:28.000000000","message":"We cannot assume that the cloud we are testing has IPv6 enabled.\nhttps://github.com/openstack/octavia-tempest-plugin/blob/master/octavia_tempest_plugin/tests/scenario/v2/test_ipv6_traffic_ops.py#L42","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"6f339296c4b0fd772e92eca4074d4e680f97562f","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    lb_ip_version \u003d 4"},{"line_number":282,"context_line":"    protocol \u003d const.UDP"},{"line_number":283,"context_line":"    member_address \u003d \u00272001:db8:0:0:0:0:0:1\u0027"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    @classmethod"},{"line_number":286,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_bebafbdd","line":283,"in_reply_to":"3fa7e38b_c78ecacf","updated":"2019-11-20 13:03:03.000000000","message":"done. added a check for test_with_ipv6","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bfc75b69e01daf375687d94d471b57898bc9f23f","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    def skip_checks(cls):"},{"line_number":287,"context_line":"        super(MixedUDPIPv4VIPIPv6MemberScenarioTest, cls).skip_checks()"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if CONF.load_balancer.provider not in [\u0027amphora\u0027, \u0027octavia\u0027]:"},{"line_number":290,"context_line":"            raise cls.skipException(\"Mixed IP version tests require provider \""},{"line_number":291,"context_line":"                                    \"\u0027amphora\u0027 or \u0027octavia\u0027 (alias to \""},{"line_number":292,"context_line":"                                    \"\u0027amphora\u0027, deprecated) set\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_2751de62","line":289,"range":{"start_line":289,"start_character":47,"end_line":289,"end_character":67},"updated":"2019-11-04 22:25:28.000000000","message":"Ann has added \u0027amphorav2\u0027 now for the jobboard work. Maybe we should move this list to the constants file, each string should be a constant, then build an \"amphora driver\" list to use here.\nhttps://review.opendev.org/689128","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bfc75b69e01daf375687d94d471b57898bc9f23f","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    def skip_checks(cls):"},{"line_number":287,"context_line":"        super(MixedUDPIPv4VIPIPv6MemberScenarioTest, cls).skip_checks()"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if CONF.load_balancer.provider not in [\u0027amphora\u0027, \u0027octavia\u0027]:"},{"line_number":290,"context_line":"            raise cls.skipException(\"Mixed IP version tests require provider \""},{"line_number":291,"context_line":"                                    \"\u0027amphora\u0027 or \u0027octavia\u0027 (alias to \""},{"line_number":292,"context_line":"                                    \"\u0027amphora\u0027, deprecated) set\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_070e223a","line":289,"range":{"start_line":289,"start_character":11,"end_line":289,"end_character":38},"updated":"2019-11-04 22:25:28.000000000","message":"Why is this a provider specific test? It seems like mixed UDP should be an exception \"skip\" for the amphora driver, where the tests would expect it to work. When we fix this issue, we would have to delete these tests instead of simply removing the exception \"skip\".","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"6f339296c4b0fd772e92eca4074d4e680f97562f","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    def skip_checks(cls):"},{"line_number":287,"context_line":"        super(MixedUDPIPv4VIPIPv6MemberScenarioTest, cls).skip_checks()"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if CONF.load_balancer.provider not in [\u0027amphora\u0027, \u0027octavia\u0027]:"},{"line_number":290,"context_line":"            raise cls.skipException(\"Mixed IP version tests require provider \""},{"line_number":291,"context_line":"                                    \"\u0027amphora\u0027 or \u0027octavia\u0027 (alias to \""},{"line_number":292,"context_line":"                                    \"\u0027amphora\u0027, deprecated) set\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_dea497bb","line":289,"range":{"start_line":289,"start_character":11,"end_line":289,"end_character":38},"in_reply_to":"3fa7e38b_070e223a","updated":"2019-11-20 13:03:03.000000000","message":"I updated this part. Now:\n- if OVN provider: test is skipped (ovn doesn\u0027t support mixing ipv4 and ipv6)\n- if const.AMPHORA_PROVIDERS: mixing ipv4 and ipv6 with UDP listeners should throw an exception (now supported by keepalived), otherwise test should pass","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"6f339296c4b0fd772e92eca4074d4e680f97562f","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    def skip_checks(cls):"},{"line_number":287,"context_line":"        super(MixedUDPIPv4VIPIPv6MemberScenarioTest, cls).skip_checks()"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if CONF.load_balancer.provider not in [\u0027amphora\u0027, \u0027octavia\u0027]:"},{"line_number":290,"context_line":"            raise cls.skipException(\"Mixed IP version tests require provider \""},{"line_number":291,"context_line":"                                    \"\u0027amphora\u0027 or \u0027octavia\u0027 (alias to \""},{"line_number":292,"context_line":"                                    \"\u0027amphora\u0027, deprecated) set\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_7ea563b3","line":289,"range":{"start_line":289,"start_character":47,"end_line":289,"end_character":67},"in_reply_to":"3fa7e38b_2751de62","updated":"2019-11-20 13:03:03.000000000","message":"Done","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"fb0b308dae868dfe211e1ae39ddbaa193a93eba7","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    def skip_checks(cls):"},{"line_number":287,"context_line":"        super(MixedUDPIPv4VIPIPv6MemberScenarioTest, cls).skip_checks()"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if CONF.load_balancer.provider not in [\u0027amphora\u0027, \u0027octavia\u0027]:"},{"line_number":290,"context_line":"            raise cls.skipException(\"Mixed IP version tests require provider \""},{"line_number":291,"context_line":"                                    \"\u0027amphora\u0027 or \u0027octavia\u0027 (alias to \""},{"line_number":292,"context_line":"                                    \"\u0027amphora\u0027, deprecated) set\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_4dbea665","line":289,"range":{"start_line":289,"start_character":11,"end_line":289,"end_character":38},"in_reply_to":"3fa7e38b_dea497bb","updated":"2019-11-21 17:23:50.000000000","message":"read: \"(not supported by keepalived)\"","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bfc75b69e01daf375687d94d471b57898bc9f23f","unresolved":false,"context_lines":[{"line_number":346,"context_line":"    member_address \u003d \u0027192.0.2.1\u0027"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"class MixedHTTPIPv4VIPIPv6MemberScenarioTest("},{"line_number":350,"context_line":"        MixedUDPIPv4VIPIPv6MemberScenarioTest):"},{"line_number":351,"context_line":"    \"\"\"Test the member object API with mixed IP protocol members/VIP."},{"line_number":352,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_47e65ab2","line":349,"updated":"2019-11-04 22:25:28.000000000","message":"These two tests seem to be duplicate to the existing IPv6/IPv4 scenario tests: https://github.com/openstack/octavia-tempest-plugin/blob/master/octavia_tempest_plugin/tests/scenario/v2/test_ipv6_traffic_ops.py#L113","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"6f339296c4b0fd772e92eca4074d4e680f97562f","unresolved":false,"context_lines":[{"line_number":346,"context_line":"    member_address \u003d \u0027192.0.2.1\u0027"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"class MixedHTTPIPv4VIPIPv6MemberScenarioTest("},{"line_number":350,"context_line":"        MixedUDPIPv4VIPIPv6MemberScenarioTest):"},{"line_number":351,"context_line":"    \"\"\"Test the member object API with mixed IP protocol members/VIP."},{"line_number":352,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_fe987376","line":349,"in_reply_to":"3fa7e38b_47e65ab2","updated":"2019-11-20 13:03:03.000000000","message":"done, removed 2 duplicated scenarios","commit_id":"07525906cde9d8a587f425264eaca83ba9ee89ee"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"59c3959887ee4cfedbd4ec79c6f2220bab9c9d5a","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            raise self.skipException(\u0027Mixed IP version tests require Octavia \u0027"},{"line_number":294,"context_line":"                                     \u0027IPv6 testing enabled\u0027)"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        if CONF.load_balancer.provider \u003d\u003d const.OVN_PROVIDER:"},{"line_number":297,"context_line":"            raise self.skipException(\u0027Mixed IP version load balancers and \u0027"},{"line_number":298,"context_line":"                                     \u0027members are not supported by the \u0027"},{"line_number":299,"context_line":"                                     \u0027provider.\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_f476d9a3","line":296,"updated":"2019-11-28 19:08:42.000000000","message":"Not much a fan of adding provider-specific code. Unsupported configurations should be raised by providers, allowing us to catch them and skip tests. In this case in particular, OVN should raise an exception on the second member create.","commit_id":"ed505babe543f64a7f322713a9c72032ae53c625"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"80ddd655ace7779919910d3ac0307e896d00266b","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            raise self.skipException(\u0027Mixed IP version tests require Octavia \u0027"},{"line_number":294,"context_line":"                                     \u0027IPv6 testing enabled\u0027)"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        if CONF.load_balancer.provider \u003d\u003d const.OVN_PROVIDER:"},{"line_number":297,"context_line":"            raise self.skipException(\u0027Mixed IP version load balancers and \u0027"},{"line_number":298,"context_line":"                                     \u0027members are not supported by the \u0027"},{"line_number":299,"context_line":"                                     \u0027provider.\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_5b1ee75f","line":296,"in_reply_to":"3fa7e38b_f476d9a3","updated":"2019-12-02 10:57:11.000000000","message":"fixed, now we check that OVN provider raises an exception","commit_id":"ed505babe543f64a7f322713a9c72032ae53c625"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"59c3959887ee4cfedbd4ec79c6f2220bab9c9d5a","unresolved":false,"context_lines":[{"line_number":308,"context_line":"            const.WEIGHT: 50,"},{"line_number":309,"context_line":"        }"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"        if self.lb_ip_version \u003d\u003d 6:"},{"line_number":312,"context_line":"            if self.lb_member_vip_ipv6_subnet:"},{"line_number":313,"context_line":"                member_kwargs[const.SUBNET_ID] \u003d ("},{"line_number":314,"context_line":"                    self.lb_member_vip_ipv6_subnet[const.ID])"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_b4a5c105","line":311,"range":{"start_line":311,"start_character":8,"end_line":311,"end_character":35},"updated":"2019-11-28 19:08:42.000000000","message":"When is this true? In resource setup, we are now explicitely creating an IP v4 load balancer (whereas before it would be v6 if test_with_ipv6, otherwise v4).","commit_id":"ed505babe543f64a7f322713a9c72032ae53c625"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"80ddd655ace7779919910d3ac0307e896d00266b","unresolved":false,"context_lines":[{"line_number":308,"context_line":"            const.WEIGHT: 50,"},{"line_number":309,"context_line":"        }"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"        if self.lb_ip_version \u003d\u003d 6:"},{"line_number":312,"context_line":"            if self.lb_member_vip_ipv6_subnet:"},{"line_number":313,"context_line":"                member_kwargs[const.SUBNET_ID] \u003d ("},{"line_number":314,"context_line":"                    self.lb_member_vip_ipv6_subnet[const.ID])"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_1b3dcfbb","line":311,"range":{"start_line":311,"start_character":8,"end_line":311,"end_character":35},"in_reply_to":"3fa7e38b_b4a5c105","updated":"2019-12-02 10:57:11.000000000","message":"done, removed this condition.\nipv6 load balancer was previously part of the tests but it has been removed because it\u0027s already tested in another scenario","commit_id":"ed505babe543f64a7f322713a9c72032ae53c625"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"546ebcf1ec71356ed83065a533af089fcc676500","unresolved":false,"context_lines":[{"line_number":306,"context_line":"            member_kwargs[const.SUBNET_ID] \u003d ("},{"line_number":307,"context_line":"                self.lb_member_vip_subnet[const.ID])"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        # Mixed IPv4/IPv6 laod balancer/members are not supported by the OVN"},{"line_number":310,"context_line":"        # provider."},{"line_number":311,"context_line":"        # Mixed IPv4/IPv6 UDP load balancer/members are not supported by the"},{"line_number":312,"context_line":"        # amphora* drivers (not currently supported by keepalived in the"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_23d492e9","line":309,"range":{"start_line":309,"start_character":26,"end_line":309,"end_character":30},"updated":"2020-01-08 19:36:01.000000000","message":"nit: load","commit_id":"89fca939fcfd9db5fce72e2552f00eb699a93b9b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3726afad074daca89ec4c65386829079449748d8","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        # amphora* drivers (not currently supported by keepalived in the"},{"line_number":313,"context_line":"        # amphora)."},{"line_number":314,"context_line":"        # Creating members should failed with a NotImplemented exception."},{"line_number":315,"context_line":"        if (CONF.load_balancer.provider \u003d\u003d const.OVN_PROVIDER or"},{"line_number":316,"context_line":"                (CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and"},{"line_number":317,"context_line":"                 protocol \u003d\u003d const.UDP)):"},{"line_number":318,"context_line":"            self.assertRaises("}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_2b9ac4c3","line":315,"updated":"2020-01-15 19:35:16.000000000","message":"I don\u0027t think we should be adding third party specific tests here.\nThey should have their own tests to cover this situation.","commit_id":"89fca939fcfd9db5fce72e2552f00eb699a93b9b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3726afad074daca89ec4c65386829079449748d8","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        if (CONF.load_balancer.provider \u003d\u003d const.OVN_PROVIDER or"},{"line_number":316,"context_line":"                (CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and"},{"line_number":317,"context_line":"                 protocol \u003d\u003d const.UDP)):"},{"line_number":318,"context_line":"            self.assertRaises("},{"line_number":319,"context_line":"                exceptions.NotImplemented,"},{"line_number":320,"context_line":"                self.mem_member_client.create_member,"},{"line_number":321,"context_line":"                **member_kwargs)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_8ba898da","line":318,"updated":"2020-01-15 19:35:16.000000000","message":"This might be better as a functional test. We could skip a test due to an open bug that UDP doesn\u0027t support mixed, but it seems odd to be this specific to a driver in tempest.","commit_id":"89fca939fcfd9db5fce72e2552f00eb699a93b9b"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"39e9607b2e1f15c0357ae78ecb5fed5b1f6790d2","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            CONF.load_balancer.check_timeout)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def _test_mixed_member_create(self, protocol):"},{"line_number":290,"context_line":"        if not CONF.load_balancer.test_with_ipv6:"},{"line_number":291,"context_line":"            raise self.skipException(\u0027Mixed IP version tests require Octavia \u0027"},{"line_number":292,"context_line":"                                     \u0027IPv6 testing enabled\u0027)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        member_name \u003d data_utils.rand_name(\"lb_member_member1-create\")"},{"line_number":295,"context_line":"        member_kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_174006a3","line":292,"range":{"start_line":290,"start_character":8,"end_line":292,"end_character":60},"updated":"2020-01-21 08:24:00.000000000","message":"Not sure having a skipException on a private method is best. What is the reason to add it here instead of on the two tests below? Code deduplication?","commit_id":"da9154c201f26d489b2d1c7613120a7075054ca0"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"0c2fabab57ad3d8e868536fd7f9e6923c36fe9c5","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            CONF.load_balancer.check_timeout)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def _test_mixed_member_create(self, protocol):"},{"line_number":290,"context_line":"        if not CONF.load_balancer.test_with_ipv6:"},{"line_number":291,"context_line":"            raise self.skipException(\u0027Mixed IP version tests require Octavia \u0027"},{"line_number":292,"context_line":"                                     \u0027IPv6 testing enabled\u0027)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        member_name \u003d data_utils.rand_name(\"lb_member_member1-create\")"},{"line_number":295,"context_line":"        member_kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_b737b2fd","line":292,"range":{"start_line":290,"start_character":8,"end_line":292,"end_character":60},"in_reply_to":"3fa7e38b_174006a3","updated":"2020-01-21 08:38:32.000000000","message":"no reason here, I can replace that \u0027if\u0027 block with a decorator in the callers","commit_id":"da9154c201f26d489b2d1c7613120a7075054ca0"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"39e9607b2e1f15c0357ae78ecb5fed5b1f6790d2","unresolved":false,"context_lines":[{"line_number":296,"context_line":"            const.NAME: member_name,"},{"line_number":297,"context_line":"            const.ADMIN_STATE_UP: True,"},{"line_number":298,"context_line":"            const.POOL_ID: self.pool_ids[protocol],"},{"line_number":299,"context_line":"            const.ADDRESS: self.member_address,"},{"line_number":300,"context_line":"            const.PROTOCOL_PORT: 80,"},{"line_number":301,"context_line":"            const.WEIGHT: 50,"},{"line_number":302,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_977ab6ec","line":299,"range":{"start_line":299,"start_character":27,"end_line":299,"end_character":46},"updated":"2020-01-21 08:24:00.000000000","message":"Why is this? Can\u0027t we use self.webserver{1,2}_ipv6?","commit_id":"da9154c201f26d489b2d1c7613120a7075054ca0"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"d9c1d2964793c9de56297ab624052d02f0561fba","unresolved":false,"context_lines":[{"line_number":296,"context_line":"            const.NAME: member_name,"},{"line_number":297,"context_line":"            const.ADMIN_STATE_UP: True,"},{"line_number":298,"context_line":"            const.POOL_ID: self.pool_ids[protocol],"},{"line_number":299,"context_line":"            const.ADDRESS: self.member_address,"},{"line_number":300,"context_line":"            const.PROTOCOL_PORT: 80,"},{"line_number":301,"context_line":"            const.WEIGHT: 50,"},{"line_number":302,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_3abac9b9","line":299,"range":{"start_line":299,"start_character":27,"end_line":299,"end_character":46},"in_reply_to":"3fa7e38b_77585a56","updated":"2020-01-21 09:20:27.000000000","message":"Oops! Sorry.\n\nnit: could be hard-coded here like in L140 for the IPv4 address.","commit_id":"da9154c201f26d489b2d1c7613120a7075054ca0"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"0c2fabab57ad3d8e868536fd7f9e6923c36fe9c5","unresolved":false,"context_lines":[{"line_number":296,"context_line":"            const.NAME: member_name,"},{"line_number":297,"context_line":"            const.ADMIN_STATE_UP: True,"},{"line_number":298,"context_line":"            const.POOL_ID: self.pool_ids[protocol],"},{"line_number":299,"context_line":"            const.ADDRESS: self.member_address,"},{"line_number":300,"context_line":"            const.PROTOCOL_PORT: 80,"},{"line_number":301,"context_line":"            const.WEIGHT: 50,"},{"line_number":302,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_77585a56","line":299,"range":{"start_line":299,"start_character":27,"end_line":299,"end_character":46},"in_reply_to":"3fa7e38b_977ab6ec","updated":"2020-01-21 08:38:32.000000000","message":"These tests don\u0027t use any server (they check that member creation works, but don\u0027t check that traffic is passing)","commit_id":"da9154c201f26d489b2d1c7613120a7075054ca0"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"39e9607b2e1f15c0357ae78ecb5fed5b1f6790d2","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            self.mem_lb_client.show_loadbalancer, self.lb_id,"},{"line_number":316,"context_line":"            const.PROVISIONING_STATUS, const.ACTIVE,"},{"line_number":317,"context_line":"            CONF.load_balancer.check_interval,"},{"line_number":318,"context_line":"            CONF.load_balancer.check_timeout)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    @decorators.idempotent_id(\u00270623aa1f-753d-44e7-afa1-017d274eace7\u0027)"},{"line_number":321,"context_line":"    # Skipping test for amphora driver until \"UDP load balancers cannot mix"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_3744229f","line":318,"updated":"2020-01-21 08:24:00.000000000","message":"I\u0027d have expected a traffic check to assert traffic is and that can reach both IPv4 and IPv6 members.","commit_id":"da9154c201f26d489b2d1c7613120a7075054ca0"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"d9c1d2964793c9de56297ab624052d02f0561fba","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            self.mem_lb_client.show_loadbalancer, self.lb_id,"},{"line_number":316,"context_line":"            const.PROVISIONING_STATUS, const.ACTIVE,"},{"line_number":317,"context_line":"            CONF.load_balancer.check_interval,"},{"line_number":318,"context_line":"            CONF.load_balancer.check_timeout)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    @decorators.idempotent_id(\u00270623aa1f-753d-44e7-afa1-017d274eace7\u0027)"},{"line_number":321,"context_line":"    # Skipping test for amphora driver until \"UDP load balancers cannot mix"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_fadd1113","line":318,"in_reply_to":"3fa7e38b_1751e631","updated":"2020-01-21 09:20:27.000000000","message":"Bad reviewer... xD","commit_id":"da9154c201f26d489b2d1c7613120a7075054ca0"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"0c2fabab57ad3d8e868536fd7f9e6923c36fe9c5","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            self.mem_lb_client.show_loadbalancer, self.lb_id,"},{"line_number":316,"context_line":"            const.PROVISIONING_STATUS, const.ACTIVE,"},{"line_number":317,"context_line":"            CONF.load_balancer.check_interval,"},{"line_number":318,"context_line":"            CONF.load_balancer.check_timeout)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    @decorators.idempotent_id(\u00270623aa1f-753d-44e7-afa1-017d274eace7\u0027)"},{"line_number":321,"context_line":"    # Skipping test for amphora driver until \"UDP load balancers cannot mix"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_1751e631","line":318,"in_reply_to":"3fa7e38b_3744229f","updated":"2020-01-21 08:38:32.000000000","message":"ditto","commit_id":"da9154c201f26d489b2d1c7613120a7075054ca0"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"39e9607b2e1f15c0357ae78ecb5fed5b1f6790d2","unresolved":false,"context_lines":[{"line_number":321,"context_line":"    # Skipping test for amphora driver until \"UDP load balancers cannot mix"},{"line_number":322,"context_line":"    # protocol versions\" (https://storyboard.openstack.org/#!/story/2003329) is"},{"line_number":323,"context_line":"    # fixed"},{"line_number":324,"context_line":"    @decorators.skip_because("},{"line_number":325,"context_line":"        bug\u003d\u00272003329\u0027,"},{"line_number":326,"context_line":"        condition\u003dCONF.load_balancer.provider in const.AMPHORA_PROVIDERS)"},{"line_number":327,"context_line":"    def test_mixed_udp_member_create(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_57d67ec6","line":324,"range":{"start_line":324,"start_character":16,"end_line":324,"end_character":28},"updated":"2020-01-21 08:24:00.000000000","message":"+1","commit_id":"da9154c201f26d489b2d1c7613120a7075054ca0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e305b6057b8715c20d2d9b54dfde21bf3fcfa6ca","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            const.LOADBALANCER_ID: cls.lb_id,"},{"line_number":88,"context_line":"            # For branches that don\u0027t support multiple listeners in single"},{"line_number":89,"context_line":"            # haproxy process and use haproxy\u003e\u003d1.8:"},{"line_number":90,"context_line":"            const.CONNECTION_LIMIT: 200,"},{"line_number":91,"context_line":"        }"},{"line_number":92,"context_line":"        listener \u003d cls.mem_listener_client.create_listener(**listener_kwargs)"},{"line_number":93,"context_line":"        cls.listener_ids[protocol] \u003d listener[const.ID]"}],"source_content_type":"text/x-python","patch_set":20,"id":"1fa4df85_35e1cf9b","line":90,"updated":"2020-02-26 03:15:47.000000000","message":"Is this really how low the limitation was in that case? O_o","commit_id":"2c597779101da3ed8ddee9650177bc58620a9cee"}]}
