)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6ce6ebd6b4bbbd5fab47d56ade590015722117d3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Integration tests with ovn_octavia_provider here are done to"},{"line_number":11,"context_line":"ensure that these two functionalities can coexist."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Depends-On: https://review.opendev.org/#/c/741303/"},{"line_number":14,"context_line":"Change-Id: I4b5ded003cbb3c9c4c0bc026f0e9b396f2665531"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9f560f44_bd1eacb8","line":13,"updated":"2020-09-16 20:32:03.000000000","message":"nit: this merged so can be removed","commit_id":"e5699cf86b2660394199fb8ed38ec629d15a4a78"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"3836ba5998fbad28a23c16afd39b5d0ff814cdbb","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Integration tests with ovn_octavia_provider here are done to"},{"line_number":11,"context_line":"ensure that these two functionalities can coexist."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Depends-On: https://review.opendev.org/#/c/741303/"},{"line_number":14,"context_line":"Change-Id: I4b5ded003cbb3c9c4c0bc026f0e9b396f2665531"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9f560f44_e2f1a098","line":13,"in_reply_to":"9f560f44_bd1eacb8","updated":"2020-09-17 01:08:03.000000000","message":"Done","commit_id":"e5699cf86b2660394199fb8ed38ec629d15a4a78"}],"ovn_octavia_provider/helper.py":[{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"646da3350ee1a582590edd73da261fcd5bb11976","unresolved":false,"context_lines":[{"line_number":427,"context_line":"        lbs \u003d self.ovn_nbdb_api.db_list_rows("},{"line_number":428,"context_line":"            \u0027Load_Balancer\u0027).execute(check_error\u003dTrue)"},{"line_number":429,"context_line":"        for lb in lbs:"},{"line_number":430,"context_line":"            # Skip load balancers used by port forwarding plugin"},{"line_number":431,"context_line":"            if lb.external_ids.get(ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY) \u003d\u003d \\"},{"line_number":432,"context_line":"                    ovn_const.PORT_FORWARDING_PLUGIN:"},{"line_number":433,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_888e1f76","line":430,"range":{"start_line":430,"start_character":12,"end_line":430,"end_character":64},"updated":"2020-07-28 07:10:28.000000000","message":"Thanks! :) Can we add a unittest covering that situation?","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"bd26de55b3f51e41a5baf337dfc6621928a50d14","unresolved":false,"context_lines":[{"line_number":427,"context_line":"        lbs \u003d self.ovn_nbdb_api.db_list_rows("},{"line_number":428,"context_line":"            \u0027Load_Balancer\u0027).execute(check_error\u003dTrue)"},{"line_number":429,"context_line":"        for lb in lbs:"},{"line_number":430,"context_line":"            # Skip load balancers used by port forwarding plugin"},{"line_number":431,"context_line":"            if lb.external_ids.get(ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY) \u003d\u003d \\"},{"line_number":432,"context_line":"                    ovn_const.PORT_FORWARDING_PLUGIN:"},{"line_number":433,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_dfa9eadf","line":430,"range":{"start_line":430,"start_character":12,"end_line":430,"end_character":64},"in_reply_to":"9f560f44_888e1f76","updated":"2020-07-28 09:43:50.000000000","message":"np!","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"0b33b1e54074bbb6ca8ff0e8c5bc70b522999d81","unresolved":false,"context_lines":[{"line_number":427,"context_line":"        lbs \u003d self.ovn_nbdb_api.db_list_rows("},{"line_number":428,"context_line":"            \u0027Load_Balancer\u0027).execute(check_error\u003dTrue)"},{"line_number":429,"context_line":"        for lb in lbs:"},{"line_number":430,"context_line":"            # Skip load balancers used by port forwarding plugin"},{"line_number":431,"context_line":"            if lb.external_ids.get(ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY) \u003d\u003d \\"},{"line_number":432,"context_line":"                    ovn_const.PORT_FORWARDING_PLUGIN:"},{"line_number":433,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_df927df6","line":430,"range":{"start_line":430,"start_character":12,"end_line":430,"end_character":64},"in_reply_to":"9f560f44_dfa9eadf","updated":"2020-07-28 21:08:29.000000000","message":"Done","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1ef20aedb43b855e7b7c2c5977ca174be66ff9c0","unresolved":false,"context_lines":[{"line_number":428,"context_line":"            \u0027Load_Balancer\u0027).execute(check_error\u003dTrue)"},{"line_number":429,"context_line":"        for lb in lbs:"},{"line_number":430,"context_line":"            # Skip load balancers used by port forwarding plugin"},{"line_number":431,"context_line":"            if lb.external_ids.get(ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY) \u003d\u003d \\"},{"line_number":432,"context_line":"                    ovn_const.PORT_FORWARDING_PLUGIN:"},{"line_number":433,"context_line":"                continue"},{"line_number":434,"context_line":"            if pool_key in lb.external_ids:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_f9d3c55e","line":431,"range":{"start_line":431,"start_character":77,"end_line":431,"end_character":78},"updated":"2020-08-03 16:24:24.000000000","message":"nit: if you respin can you use () and remove the backslash?  pet peeve of mine :)","commit_id":"40543895e1afa6be9f889cc58d6d3cfc09c76adb"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"62e3fc8422c2fa1739c55aad47286ff201952921","unresolved":false,"context_lines":[{"line_number":428,"context_line":"            \u0027Load_Balancer\u0027).execute(check_error\u003dTrue)"},{"line_number":429,"context_line":"        for lb in lbs:"},{"line_number":430,"context_line":"            # Skip load balancers used by port forwarding plugin"},{"line_number":431,"context_line":"            if lb.external_ids.get(ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY) \u003d\u003d \\"},{"line_number":432,"context_line":"                    ovn_const.PORT_FORWARDING_PLUGIN:"},{"line_number":433,"context_line":"                continue"},{"line_number":434,"context_line":"            if pool_key in lb.external_ids:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_210d4d3e","line":431,"range":{"start_line":431,"start_character":77,"end_line":431,"end_character":78},"in_reply_to":"9f560f44_f9d3c55e","updated":"2020-08-17 17:47:29.000000000","message":"argh, yes... sorry for missing that!","commit_id":"40543895e1afa6be9f889cc58d6d3cfc09c76adb"}],"ovn_octavia_provider/tests/functional/base.py":[{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"5a5578ca3306856281c012be7af2956b18f85403","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        lbs \u003d []"},{"line_number":168,"context_line":"        for lb in self.nb_api.tables[\u0027Load_Balancer\u0027].rows.values():"},{"line_number":169,"context_line":"            external_ids \u003d dict(lb.external_ids)"},{"line_number":170,"context_line":"            # Skip load balancers used by port forwarding plugin"},{"line_number":171,"context_line":"            if external_ids.get(ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY) \u003d\u003d \\"},{"line_number":172,"context_line":"                    ovn_const.PORT_FORWARDING_PLUGIN:"},{"line_number":173,"context_line":"                continue"},{"line_number":174,"context_line":"            ls_refs \u003d external_ids.get(ovn_const.LB_EXT_IDS_LS_REFS_KEY)"},{"line_number":175,"context_line":"            if ls_refs:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_f2f51c85","line":172,"range":{"start_line":170,"start_character":12,"end_line":172,"end_character":53},"updated":"2020-07-27 10:46:45.000000000","message":"That\u0027s coolish! I would add it also to the driver itself.","commit_id":"9a5ac117e94b9d44d9b31f429fedf7b12a958cc6"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"7eae951c8d023fec8e1e5871e366b2677e639a4e","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        lbs \u003d []"},{"line_number":168,"context_line":"        for lb in self.nb_api.tables[\u0027Load_Balancer\u0027].rows.values():"},{"line_number":169,"context_line":"            external_ids \u003d dict(lb.external_ids)"},{"line_number":170,"context_line":"            # Skip load balancers used by port forwarding plugin"},{"line_number":171,"context_line":"            if external_ids.get(ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY) \u003d\u003d \\"},{"line_number":172,"context_line":"                    ovn_const.PORT_FORWARDING_PLUGIN:"},{"line_number":173,"context_line":"                continue"},{"line_number":174,"context_line":"            ls_refs \u003d external_ids.get(ovn_const.LB_EXT_IDS_LS_REFS_KEY)"},{"line_number":175,"context_line":"            if ls_refs:"},{"line_number":176,"context_line":"                external_ids["}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_7ea0b3a6","line":173,"range":{"start_line":170,"start_character":0,"end_line":173,"end_character":24},"updated":"2020-07-27 13:07:24.000000000","message":"Please add the same in helper._find_ovn_lbs() function :)","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"a7e0401a079cdf3c6e09f3e608971c7a8f370c5f","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        lbs \u003d []"},{"line_number":168,"context_line":"        for lb in self.nb_api.tables[\u0027Load_Balancer\u0027].rows.values():"},{"line_number":169,"context_line":"            external_ids \u003d dict(lb.external_ids)"},{"line_number":170,"context_line":"            # Skip load balancers used by port forwarding plugin"},{"line_number":171,"context_line":"            if external_ids.get(ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY) \u003d\u003d \\"},{"line_number":172,"context_line":"                    ovn_const.PORT_FORWARDING_PLUGIN:"},{"line_number":173,"context_line":"                continue"},{"line_number":174,"context_line":"            ls_refs \u003d external_ids.get(ovn_const.LB_EXT_IDS_LS_REFS_KEY)"},{"line_number":175,"context_line":"            if ls_refs:"},{"line_number":176,"context_line":"                external_ids["}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_95eda527","line":173,"range":{"start_line":170,"start_character":0,"end_line":173,"end_character":24},"in_reply_to":"9f560f44_7ea0b3a6","updated":"2020-07-27 14:58:18.000000000","message":"Hm... I only found 1 place in the helper where lb_uuid / name is not provided. All other places should be fine, as\nthe name / uuid is unique for all lb entries.","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1ef20aedb43b855e7b7c2c5977ca174be66ff9c0","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        for lb in self.nb_api.tables[\u0027Load_Balancer\u0027].rows.values():"},{"line_number":169,"context_line":"            external_ids \u003d dict(lb.external_ids)"},{"line_number":170,"context_line":"            # Skip load balancers used by port forwarding plugin"},{"line_number":171,"context_line":"            if external_ids.get(ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY) \u003d\u003d \\"},{"line_number":172,"context_line":"                    ovn_const.PORT_FORWARDING_PLUGIN:"},{"line_number":173,"context_line":"                continue"},{"line_number":174,"context_line":"            ls_refs \u003d external_ids.get(ovn_const.LB_EXT_IDS_LS_REFS_KEY)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_19cf99b0","line":171,"range":{"start_line":171,"start_character":74,"end_line":171,"end_character":75},"updated":"2020-08-03 16:24:24.000000000","message":"ditto","commit_id":"40543895e1afa6be9f889cc58d6d3cfc09c76adb"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"62e3fc8422c2fa1739c55aad47286ff201952921","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        for lb in self.nb_api.tables[\u0027Load_Balancer\u0027].rows.values():"},{"line_number":169,"context_line":"            external_ids \u003d dict(lb.external_ids)"},{"line_number":170,"context_line":"            # Skip load balancers used by port forwarding plugin"},{"line_number":171,"context_line":"            if external_ids.get(ovn_const.OVN_DEVICE_OWNER_EXT_ID_KEY) \u003d\u003d \\"},{"line_number":172,"context_line":"                    ovn_const.PORT_FORWARDING_PLUGIN:"},{"line_number":173,"context_line":"                continue"},{"line_number":174,"context_line":"            ls_refs \u003d external_ids.get(ovn_const.LB_EXT_IDS_LS_REFS_KEY)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_0108092b","line":171,"range":{"start_line":171,"start_character":74,"end_line":171,"end_character":75},"in_reply_to":"9f560f44_19cf99b0","updated":"2020-08-17 17:47:29.000000000","message":"ack","commit_id":"40543895e1afa6be9f889cc58d6d3cfc09c76adb"}],"ovn_octavia_provider/tests/functional/test_integration.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"5031bb1c6ba771fbc90e652116710d143af69b75","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from octavia_lib.common import constants as o_constants"},{"line_number":17,"context_line":"from ovn_octavia_provider.common import constants as ovn_const"},{"line_number":18,"context_line":"from ovn_octavia_provider.common import utils"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_1d60a1ce","line":16,"updated":"2020-07-27 11:16:43.000000000","message":"pep8: F401 \u0027octavia_lib.common.constants as o_constants\u0027 imported but unused","commit_id":"9a5ac117e94b9d44d9b31f429fedf7b12a958cc6"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"5031bb1c6ba771fbc90e652116710d143af69b75","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from ovn_octavia_provider.common import utils"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from ovn_octavia_provider.tests.functional import base as ovn_base"},{"line_number":21,"context_line":"from neutron_lib.api.definitions import floating_ip_port_forwarding as pf_def"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class TestOvnOctaviaProviderIntegration(ovn_base.TestOvnOctaviaBase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_7d9a7dc5","line":21,"updated":"2020-07-27 11:16:43.000000000","message":"pep8: H306: imports not in alphabetical order (ovn_octavia_provider.tests.functional.base, neutron_lib.api.definitions.floating_ip_port_forwarding)","commit_id":"9a5ac117e94b9d44d9b31f429fedf7b12a958cc6"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"5031bb1c6ba771fbc90e652116710d143af69b75","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        _verify_pf_lb(self, \u0027tcp\u0027, 2222, 22)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        fip_pf_args2 \u003d {pf_def.EXTERNAL_PORT: 5353, pf_def.INTERNAL_PORT: 53,"},{"line_number":110,"context_line":"                       pf_def.PROTOCOL: \u0027udp\u0027}"},{"line_number":111,"context_line":"        fip_attrs2 \u003d {pf_def.RESOURCE_NAME: {pf_def.RESOURCE_NAME:"},{"line_number":112,"context_line":"                                                 fip_pf_args2}}"},{"line_number":113,"context_line":"        self.pf_plugin.update_floatingip_port_forwarding(self.context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_5d9fb9b3","line":110,"updated":"2020-07-27 11:16:43.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"9a5ac117e94b9d44d9b31f429fedf7b12a958cc6"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"5031bb1c6ba771fbc90e652116710d143af69b75","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        fip_pf_args2 \u003d {pf_def.EXTERNAL_PORT: 5353, pf_def.INTERNAL_PORT: 53,"},{"line_number":110,"context_line":"                       pf_def.PROTOCOL: \u0027udp\u0027}"},{"line_number":111,"context_line":"        fip_attrs2 \u003d {pf_def.RESOURCE_NAME: {pf_def.RESOURCE_NAME:"},{"line_number":112,"context_line":"                                                 fip_pf_args2}}"},{"line_number":113,"context_line":"        self.pf_plugin.update_floatingip_port_forwarding(self.context,"},{"line_number":114,"context_line":"            pf_obj[\u0027id\u0027], fip_id, **fip_attrs2)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_bda4150a","line":112,"updated":"2020-07-27 11:16:43.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"9a5ac117e94b9d44d9b31f429fedf7b12a958cc6"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"5031bb1c6ba771fbc90e652116710d143af69b75","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        fip_attrs2 \u003d {pf_def.RESOURCE_NAME: {pf_def.RESOURCE_NAME:"},{"line_number":112,"context_line":"                                                 fip_pf_args2}}"},{"line_number":113,"context_line":"        self.pf_plugin.update_floatingip_port_forwarding(self.context,"},{"line_number":114,"context_line":"            pf_obj[\u0027id\u0027], fip_id, **fip_attrs2)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # Update octavia_provider_lb"},{"line_number":117,"context_line":"        self._loadbalancer_operation(lb_data, update\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_9da951e1","line":114,"updated":"2020-07-27 11:16:43.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"9a5ac117e94b9d44d9b31f429fedf7b12a958cc6"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0a894611cb90ac499a7bd3251ec9b3dcf63a88d3","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from octavia_lib.common import constants as o_constants"},{"line_number":17,"context_line":"from ovn_octavia_provider.common import constants as ovn_const"},{"line_number":18,"context_line":"from ovn_octavia_provider.common import utils"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_12940b8b","line":16,"updated":"2020-07-27 13:38:35.000000000","message":"pep8: F401 \u0027octavia_lib.common.constants as o_constants\u0027 imported but unused","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"a7e0401a079cdf3c6e09f3e608971c7a8f370c5f","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from octavia_lib.common import constants as o_constants"},{"line_number":17,"context_line":"from ovn_octavia_provider.common import constants as ovn_const"},{"line_number":18,"context_line":"from ovn_octavia_provider.common import utils"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_f5f22106","line":16,"in_reply_to":"9f560f44_12940b8b","updated":"2020-07-27 14:58:18.000000000","message":"Done","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0a894611cb90ac499a7bd3251ec9b3dcf63a88d3","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from ovn_octavia_provider.common import utils"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from ovn_octavia_provider.tests.functional import base as ovn_base"},{"line_number":21,"context_line":"from neutron_lib.api.definitions import floating_ip_port_forwarding as pf_def"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class TestOvnOctaviaProviderIntegration(ovn_base.TestOvnOctaviaBase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_7291079a","line":21,"updated":"2020-07-27 13:38:35.000000000","message":"pep8: H306: imports not in alphabetical order (ovn_octavia_provider.tests.functional.base, neutron_lib.api.definitions.floating_ip_port_forwarding)","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"a7e0401a079cdf3c6e09f3e608971c7a8f370c5f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from ovn_octavia_provider.common import utils"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from ovn_octavia_provider.tests.functional import base as ovn_base"},{"line_number":21,"context_line":"from neutron_lib.api.definitions import floating_ip_port_forwarding as pf_def"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class TestOvnOctaviaProviderIntegration(ovn_base.TestOvnOctaviaBase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_35dc9973","line":21,"in_reply_to":"9f560f44_7291079a","updated":"2020-07-27 14:58:18.000000000","message":"Done","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"6dda6f32f611cf5eccfed36ebad343b41e38d852","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class TestOvnOctaviaProviderIntegration(ovn_base.TestOvnOctaviaBase):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def _find_pf_lb(self, router_id, fip_id\u003dNone):"},{"line_number":27,"context_line":"        result \u003d []"},{"line_number":28,"context_line":"        for ovn_lb in self.nb_api.get_router_floatingip_lbs("}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_1efff7aa","line":25,"updated":"2020-07-27 13:03:40.000000000","message":"I would add a dedicated setup method here, that will load PF plugin and later use the setup() provided by base class (with using super()).","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"a7e0401a079cdf3c6e09f3e608971c7a8f370c5f","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class TestOvnOctaviaProviderIntegration(ovn_base.TestOvnOctaviaBase):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def _find_pf_lb(self, router_id, fip_id\u003dNone):"},{"line_number":27,"context_line":"        result \u003d []"},{"line_number":28,"context_line":"        for ovn_lb in self.nb_api.get_router_floatingip_lbs("}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_75e61147","line":25,"in_reply_to":"9f560f44_1efff7aa","updated":"2020-07-27 14:58:18.000000000","message":"Done","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"bf68b3d74f93b66174fc9bda380cc2e54a2fa4f3","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class TestOvnOctaviaProviderIntegration(ovn_base.TestOvnOctaviaBase):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def _find_pf_lb(self, router_id, fip_id\u003dNone):"},{"line_number":27,"context_line":"        result \u003d []"},{"line_number":28,"context_line":"        for ovn_lb in self.nb_api.get_router_floatingip_lbs("}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_1e2b7794","line":25,"in_reply_to":"9f560f44_1efff7aa","updated":"2020-07-27 13:29:06.000000000","message":"Or the other way around super() and then load PF.","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0a894611cb90ac499a7bd3251ec9b3dcf63a88d3","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        _verify_pf_lb(self, \u0027tcp\u0027, 2222, 22)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        fip_pf_args2 \u003d {pf_def.EXTERNAL_PORT: 5353, pf_def.INTERNAL_PORT: 53,"},{"line_number":110,"context_line":"                       pf_def.PROTOCOL: \u0027udp\u0027}"},{"line_number":111,"context_line":"        fip_attrs2 \u003d {pf_def.RESOURCE_NAME: {pf_def.RESOURCE_NAME:"},{"line_number":112,"context_line":"                                                 fip_pf_args2}}"},{"line_number":113,"context_line":"        self.pf_plugin.update_floatingip_port_forwarding(self.context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_528e8378","line":110,"updated":"2020-07-27 13:38:35.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"a7e0401a079cdf3c6e09f3e608971c7a8f370c5f","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        _verify_pf_lb(self, \u0027tcp\u0027, 2222, 22)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        fip_pf_args2 \u003d {pf_def.EXTERNAL_PORT: 5353, pf_def.INTERNAL_PORT: 53,"},{"line_number":110,"context_line":"                       pf_def.PROTOCOL: \u0027udp\u0027}"},{"line_number":111,"context_line":"        fip_attrs2 \u003d {pf_def.RESOURCE_NAME: {pf_def.RESOURCE_NAME:"},{"line_number":112,"context_line":"                                                 fip_pf_args2}}"},{"line_number":113,"context_line":"        self.pf_plugin.update_floatingip_port_forwarding(self.context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_f55981fe","line":110,"in_reply_to":"9f560f44_528e8378","updated":"2020-07-27 14:58:18.000000000","message":"Done","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0a894611cb90ac499a7bd3251ec9b3dcf63a88d3","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        fip_pf_args2 \u003d {pf_def.EXTERNAL_PORT: 5353, pf_def.INTERNAL_PORT: 53,"},{"line_number":110,"context_line":"                       pf_def.PROTOCOL: \u0027udp\u0027}"},{"line_number":111,"context_line":"        fip_attrs2 \u003d {pf_def.RESOURCE_NAME: {pf_def.RESOURCE_NAME:"},{"line_number":112,"context_line":"                                                 fip_pf_args2}}"},{"line_number":113,"context_line":"        self.pf_plugin.update_floatingip_port_forwarding(self.context,"},{"line_number":114,"context_line":"            pf_obj[\u0027id\u0027], fip_id, **fip_attrs2)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_b2e8bf16","line":112,"updated":"2020-07-27 13:38:35.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"a7e0401a079cdf3c6e09f3e608971c7a8f370c5f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        fip_pf_args2 \u003d {pf_def.EXTERNAL_PORT: 5353, pf_def.INTERNAL_PORT: 53,"},{"line_number":110,"context_line":"                       pf_def.PROTOCOL: \u0027udp\u0027}"},{"line_number":111,"context_line":"        fip_attrs2 \u003d {pf_def.RESOURCE_NAME: {pf_def.RESOURCE_NAME:"},{"line_number":112,"context_line":"                                                 fip_pf_args2}}"},{"line_number":113,"context_line":"        self.pf_plugin.update_floatingip_port_forwarding(self.context,"},{"line_number":114,"context_line":"            pf_obj[\u0027id\u0027], fip_id, **fip_attrs2)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_3573f982","line":112,"in_reply_to":"9f560f44_b2e8bf16","updated":"2020-07-27 14:58:18.000000000","message":"Done","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0a894611cb90ac499a7bd3251ec9b3dcf63a88d3","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        fip_attrs2 \u003d {pf_def.RESOURCE_NAME: {pf_def.RESOURCE_NAME:"},{"line_number":112,"context_line":"                                                 fip_pf_args2}}"},{"line_number":113,"context_line":"        self.pf_plugin.update_floatingip_port_forwarding(self.context,"},{"line_number":114,"context_line":"            pf_obj[\u0027id\u0027], fip_id, **fip_attrs2)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # Update octavia_provider_lb"},{"line_number":117,"context_line":"        self._loadbalancer_operation(lb_data, update\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_92edbb27","line":114,"updated":"2020-07-27 13:38:35.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"a7e0401a079cdf3c6e09f3e608971c7a8f370c5f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        fip_attrs2 \u003d {pf_def.RESOURCE_NAME: {pf_def.RESOURCE_NAME:"},{"line_number":112,"context_line":"                                                 fip_pf_args2}}"},{"line_number":113,"context_line":"        self.pf_plugin.update_floatingip_port_forwarding(self.context,"},{"line_number":114,"context_line":"            pf_obj[\u0027id\u0027], fip_id, **fip_attrs2)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # Update octavia_provider_lb"},{"line_number":117,"context_line":"        self._loadbalancer_operation(lb_data, update\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_15707572","line":114,"in_reply_to":"9f560f44_92edbb27","updated":"2020-07-27 14:58:18.000000000","message":"Done","commit_id":"57a8c682ab2a8b49433149fdad2e6b3234385213"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"646da3350ee1a582590edd73da261fcd5bb11976","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class TestOvnOctaviaProviderIntegration(ovn_base.TestOvnOctaviaBase):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(TestOvnOctaviaProviderIntegration, self).setUp()"},{"line_number":29,"context_line":"        # Add port_forwarding as a configured service plugin (if needed)"},{"line_number":30,"context_line":"        svc_plugins \u003d set(cfg.CONF.service_plugins)"},{"line_number":31,"context_line":"        svc_plugins.add(\"port_forwarding\")"},{"line_number":32,"context_line":"        cfg.CONF.set_override(\"service_plugins\", list(svc_plugins))"},{"line_number":33,"context_line":"        if not self.pf_plugin:"},{"line_number":34,"context_line":"            # OVN does not use RPC: disable it for port-forwarding tests"},{"line_number":35,"context_line":"            self.pf_plugin \u003d manager.NeutronManager.load_class_for_provider("},{"line_number":36,"context_line":"                \u0027neutron.service_plugins\u0027, \u0027port_forwarding\u0027)()"},{"line_number":37,"context_line":"            self.pf_plugin._rpc_notifications_required \u003d False"},{"line_number":38,"context_line":"        self.assertIsNotNone(self.pf_plugin,"},{"line_number":39,"context_line":"                             \"TestOVNFunctionalBase is expected to have \""},{"line_number":40,"context_line":"                             \"port forwarding plugin configured\")"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _find_pf_lb(self, router_id, fip_id\u003dNone):"},{"line_number":43,"context_line":"        result \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_ad80558d","line":40,"range":{"start_line":27,"start_character":0,"end_line":40,"end_character":65},"updated":"2020-07-28 07:10:28.000000000","message":"Thanks :)","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"bd26de55b3f51e41a5baf337dfc6621928a50d14","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class TestOvnOctaviaProviderIntegration(ovn_base.TestOvnOctaviaBase):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(TestOvnOctaviaProviderIntegration, self).setUp()"},{"line_number":29,"context_line":"        # Add port_forwarding as a configured service plugin (if needed)"},{"line_number":30,"context_line":"        svc_plugins \u003d set(cfg.CONF.service_plugins)"},{"line_number":31,"context_line":"        svc_plugins.add(\"port_forwarding\")"},{"line_number":32,"context_line":"        cfg.CONF.set_override(\"service_plugins\", list(svc_plugins))"},{"line_number":33,"context_line":"        if not self.pf_plugin:"},{"line_number":34,"context_line":"            # OVN does not use RPC: disable it for port-forwarding tests"},{"line_number":35,"context_line":"            self.pf_plugin \u003d manager.NeutronManager.load_class_for_provider("},{"line_number":36,"context_line":"                \u0027neutron.service_plugins\u0027, \u0027port_forwarding\u0027)()"},{"line_number":37,"context_line":"            self.pf_plugin._rpc_notifications_required \u003d False"},{"line_number":38,"context_line":"        self.assertIsNotNone(self.pf_plugin,"},{"line_number":39,"context_line":"                             \"TestOVNFunctionalBase is expected to have \""},{"line_number":40,"context_line":"                             \"port forwarding plugin configured\")"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _find_pf_lb(self, router_id, fip_id\u003dNone):"},{"line_number":43,"context_line":"        result \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_ff0e6ee3","line":40,"range":{"start_line":27,"start_character":0,"end_line":40,"end_character":65},"in_reply_to":"9f560f44_ad80558d","updated":"2020-07-28 09:43:50.000000000","message":":)","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"646da3350ee1a582590edd73da261fcd5bb11976","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def _loadbalancer_operation(self, lb_data\u003dNone, update\u003dFalse,"},{"line_number":52,"context_line":"                                delete\u003dFalse):"},{"line_number":53,"context_line":"        if not lb_data:"},{"line_number":54,"context_line":"            lb_data \u003d self._create_load_balancer_and_validate("},{"line_number":55,"context_line":"                {\u0027vip_network\u0027: \u0027vip_network\u0027, \u0027cidr\u0027: \u002710.0.0.0/24\u0027})"},{"line_number":56,"context_line":"        if update:"},{"line_number":57,"context_line":"            self._update_load_balancer_and_validate(lb_data,"},{"line_number":58,"context_line":"                                                    admin_state_up\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_287ef36a","line":55,"range":{"start_line":54,"start_character":12,"end_line":55,"end_character":70},"updated":"2020-07-28 07:10:28.000000000","message":"Are we sure that after executing this one we will have the LB row created, right?","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"bd26de55b3f51e41a5baf337dfc6621928a50d14","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def _loadbalancer_operation(self, lb_data\u003dNone, update\u003dFalse,"},{"line_number":52,"context_line":"                                delete\u003dFalse):"},{"line_number":53,"context_line":"        if not lb_data:"},{"line_number":54,"context_line":"            lb_data \u003d self._create_load_balancer_and_validate("},{"line_number":55,"context_line":"                {\u0027vip_network\u0027: \u0027vip_network\u0027, \u0027cidr\u0027: \u002710.0.0.0/24\u0027})"},{"line_number":56,"context_line":"        if update:"},{"line_number":57,"context_line":"            self._update_load_balancer_and_validate(lb_data,"},{"line_number":58,"context_line":"                                                    admin_state_up\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_bf04f6c7","line":55,"range":{"start_line":54,"start_character":12,"end_line":55,"end_character":70},"in_reply_to":"9f560f44_287ef36a","updated":"2020-07-28 09:43:50.000000000","message":"Yes. That happens here:\nhttps://github.com/openstack/ovn-octavia-provider/blob/fac554d1e6051eab9f90fe3cacbaadf160227725/ovn_octavia_provider/tests/functional/base.py#L364-L365","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"646da3350ee1a582590edd73da261fcd5bb11976","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        fip_attrs2 \u003d {pf_def.RESOURCE_NAME: {"},{"line_number":126,"context_line":"            pf_def.RESOURCE_NAME: fip_pf_args2}}"},{"line_number":127,"context_line":"        self.pf_plugin.update_floatingip_port_forwarding("},{"line_number":128,"context_line":"            self.context, pf_obj[\u0027id\u0027], fip_id, **fip_attrs2)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # Update octavia_provider_lb"},{"line_number":131,"context_line":"        self._loadbalancer_operation(lb_data, update\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_4d21b9b4","line":128,"range":{"start_line":128,"start_character":0,"end_line":128,"end_character":58},"updated":"2020-07-28 07:10:28.000000000","message":"Here I would test if octavia load_balancer is untouched after doing operations on FIP PF.\nLike: get the LB row before and after operation, validate if those are equal.","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"bd26de55b3f51e41a5baf337dfc6621928a50d14","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        fip_attrs2 \u003d {pf_def.RESOURCE_NAME: {"},{"line_number":126,"context_line":"            pf_def.RESOURCE_NAME: fip_pf_args2}}"},{"line_number":127,"context_line":"        self.pf_plugin.update_floatingip_port_forwarding("},{"line_number":128,"context_line":"            self.context, pf_obj[\u0027id\u0027], fip_id, **fip_attrs2)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # Update octavia_provider_lb"},{"line_number":131,"context_line":"        self._loadbalancer_operation(lb_data, update\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_5f183a1c","line":128,"range":{"start_line":128,"start_character":0,"end_line":128,"end_character":58},"in_reply_to":"9f560f44_4d21b9b4","updated":"2020-07-28 09:43:50.000000000","message":"Ack, will do.","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"0b33b1e54074bbb6ca8ff0e8c5bc70b522999d81","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        fip_attrs2 \u003d {pf_def.RESOURCE_NAME: {"},{"line_number":126,"context_line":"            pf_def.RESOURCE_NAME: fip_pf_args2}}"},{"line_number":127,"context_line":"        self.pf_plugin.update_floatingip_port_forwarding("},{"line_number":128,"context_line":"            self.context, pf_obj[\u0027id\u0027], fip_id, **fip_attrs2)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # Update octavia_provider_lb"},{"line_number":131,"context_line":"        self._loadbalancer_operation(lb_data, update\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_5a703ba6","line":128,"range":{"start_line":128,"start_character":0,"end_line":128,"end_character":58},"in_reply_to":"9f560f44_5f183a1c","updated":"2020-07-28 21:08:29.000000000","message":"Done","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"646da3350ee1a582590edd73da261fcd5bb11976","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        _verify_pf_lb(self, \u0027udp\u0027, 5353, 53)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        # Delete pf_lb after creating octavia_provider_lb"},{"line_number":139,"context_line":"        lb_data \u003d self._loadbalancer_operation()"},{"line_number":140,"context_line":"        self.pf_plugin.delete_floatingip_port_forwarding("},{"line_number":141,"context_line":"            self.context, pf_obj[\u0027id\u0027], fip_id)"},{"line_number":142,"context_line":"        self._loadbalancer_operation(lb_data, update\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_68974b92","line":139,"range":{"start_line":139,"start_character":8,"end_line":139,"end_character":48},"updated":"2020-07-28 07:10:28.000000000","message":"The same, create the LB, get the row, validate the rows after.","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"0b33b1e54074bbb6ca8ff0e8c5bc70b522999d81","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        _verify_pf_lb(self, \u0027udp\u0027, 5353, 53)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        # Delete pf_lb after creating octavia_provider_lb"},{"line_number":139,"context_line":"        lb_data \u003d self._loadbalancer_operation()"},{"line_number":140,"context_line":"        self.pf_plugin.delete_floatingip_port_forwarding("},{"line_number":141,"context_line":"            self.context, pf_obj[\u0027id\u0027], fip_id)"},{"line_number":142,"context_line":"        self._loadbalancer_operation(lb_data, update\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_3a758796","line":139,"range":{"start_line":139,"start_character":8,"end_line":139,"end_character":48},"in_reply_to":"9f560f44_1fe36207","updated":"2020-07-28 21:08:29.000000000","message":"Done","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"bd26de55b3f51e41a5baf337dfc6621928a50d14","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        _verify_pf_lb(self, \u0027udp\u0027, 5353, 53)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        # Delete pf_lb after creating octavia_provider_lb"},{"line_number":139,"context_line":"        lb_data \u003d self._loadbalancer_operation()"},{"line_number":140,"context_line":"        self.pf_plugin.delete_floatingip_port_forwarding("},{"line_number":141,"context_line":"            self.context, pf_obj[\u0027id\u0027], fip_id)"},{"line_number":142,"context_line":"        self._loadbalancer_operation(lb_data, update\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_1fe36207","line":139,"range":{"start_line":139,"start_character":8,"end_line":139,"end_character":48},"in_reply_to":"9f560f44_68974b92","updated":"2020-07-28 09:43:50.000000000","message":"Good point, will do.","commit_id":"b8e0adb9acf0dfec180fc35c339bb65afc63404e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"90efad83afbf0993c2a81fc171f1afeeb2624303","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            ext_ids \u003d ovn_lb.external_ids"},{"line_number":47,"context_line":"            if not fip_id or fip_id \u003d\u003d ext_ids[ovn_const.OVN_FIP_EXT_ID_KEY]:"},{"line_number":48,"context_line":"                result.append(ovn_lb)"},{"line_number":49,"context_line":"        return result if result else None"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _loadbalancer_operation(self, lb_data\u003dNone, update\u003dFalse,"},{"line_number":52,"context_line":"                                delete\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_8b655820","line":49,"range":{"start_line":49,"start_character":15,"end_line":49,"end_character":41},"updated":"2020-08-17 15:59:55.000000000","message":"could have been \u0027result or None\u0027, shorthand","commit_id":"40543895e1afa6be9f889cc58d6d3cfc09c76adb"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"62e3fc8422c2fa1739c55aad47286ff201952921","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            ext_ids \u003d ovn_lb.external_ids"},{"line_number":47,"context_line":"            if not fip_id or fip_id \u003d\u003d ext_ids[ovn_const.OVN_FIP_EXT_ID_KEY]:"},{"line_number":48,"context_line":"                result.append(ovn_lb)"},{"line_number":49,"context_line":"        return result if result else None"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _loadbalancer_operation(self, lb_data\u003dNone, update\u003dFalse,"},{"line_number":52,"context_line":"                                delete\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_dc0b9421","line":49,"range":{"start_line":49,"start_character":15,"end_line":49,"end_character":41},"in_reply_to":"9f560f44_8b655820","updated":"2020-08-17 17:47:29.000000000","message":"indeed!","commit_id":"40543895e1afa6be9f889cc58d6d3cfc09c76adb"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6ce6ebd6b4bbbd5fab47d56ade590015722117d3","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        if not self.pf_plugin:"},{"line_number":34,"context_line":"            # OVN does not use RPC: disable it for port-forwarding tests"},{"line_number":35,"context_line":"            self.pf_plugin \u003d manager.NeutronManager.load_class_for_provider("},{"line_number":36,"context_line":"                \u0027neutron.service_plugins\u0027, \u0027port_forwarding\u0027)()"},{"line_number":37,"context_line":"            self.pf_plugin._rpc_notifications_required \u003d False"},{"line_number":38,"context_line":"        self.assertIsNotNone(self.pf_plugin,"},{"line_number":39,"context_line":"                             \"TestOVNFunctionalBase is expected to have \""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_fd1024ae","line":36,"updated":"2020-09-16 20:32:03.000000000","message":"So I just noticed this call.  Something we want to try and do in this repo is to not import things from neutron if possible.  This call isn\u0027t in neutron-lib, but since the class is not required we can just copy the code, or even define a helper locally similar to load_metering_driver() in the neutron tree.  For example:\n\nfrom neutron_lib.utils import runtime\nfrom oslo_utils import excutils\n\ndef load_port_forwarding_plugin():\n    \"\"\"Load port forwarding plugin\n\n    :returns: plugin that is loaded\n    :raises ImportError: if fails to load plugin\n    \"\"\"\n\n    try:\n        return runtime.load_class_by_alias_or_classname(\n                \u0027neutron.service_plugins\u0027, \u0027port_forwarding\u0027)\n    except ImportError:\n        with excutils.save_and_reraise_exception():\n            LOG.error(\"Error loading port_forwarding plugin\")\n\nThen call that here.  Sound good?","commit_id":"e5699cf86b2660394199fb8ed38ec629d15a4a78"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"3836ba5998fbad28a23c16afd39b5d0ff814cdbb","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        if not self.pf_plugin:"},{"line_number":34,"context_line":"            # OVN does not use RPC: disable it for port-forwarding tests"},{"line_number":35,"context_line":"            self.pf_plugin \u003d manager.NeutronManager.load_class_for_provider("},{"line_number":36,"context_line":"                \u0027neutron.service_plugins\u0027, \u0027port_forwarding\u0027)()"},{"line_number":37,"context_line":"            self.pf_plugin._rpc_notifications_required \u003d False"},{"line_number":38,"context_line":"        self.assertIsNotNone(self.pf_plugin,"},{"line_number":39,"context_line":"                             \"TestOVNFunctionalBase is expected to have \""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_22ec38ba","line":36,"in_reply_to":"9f560f44_fd1024ae","updated":"2020-09-17 01:08:03.000000000","message":"Done","commit_id":"e5699cf86b2660394199fb8ed38ec629d15a4a78"}]}
