)]}'
{"ovn_octavia_provider/driver.py":[{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"dcf2ec748f4f82be5ebb1bd3a0d29441a820bf12","unresolved":true,"context_lines":[{"line_number":204,"context_line":"        return False"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def _check_member_monitor_options(self, member):"},{"line_number":207,"context_line":"        if self._check_monitor_options(member):"},{"line_number":208,"context_line":"            msg \u003d _(\u0027OVN Load Balancer does not support different member \u0027"},{"line_number":209,"context_line":"                    \u0027monitor address or port.\u0027)"},{"line_number":210,"context_line":"            raise driver_exceptions.UnsupportedOptionError("}],"source_content_type":"text/x-python","patch_set":62,"id":"12abf451_1a7c8cb4","line":207,"range":{"start_line":207,"start_character":16,"end_line":207,"end_character":37},"updated":"2021-06-24 18:44:48.000000000","message":"Looking at _check_monitor_options, I see:\n  if member.monitor_address or member.monitor_port:\n\nDoes that need to me modified so that if the address/port is what we\nexpect, this validation is not throwing the exception ?","commit_id":"04601b5c7760148da8db41134ff9c49e822ad581"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0544d7126341f037f6e1f81da17c163e95e013bb","unresolved":true,"context_lines":[{"line_number":204,"context_line":"        return False"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def _check_member_monitor_options(self, member):"},{"line_number":207,"context_line":"        if self._check_monitor_options(member):"},{"line_number":208,"context_line":"            msg \u003d _(\u0027OVN Load Balancer does not support different member \u0027"},{"line_number":209,"context_line":"                    \u0027monitor address or port.\u0027)"},{"line_number":210,"context_line":"            raise driver_exceptions.UnsupportedOptionError("}],"source_content_type":"text/x-python","patch_set":62,"id":"22212723_ce57e924","line":207,"range":{"start_line":207,"start_character":16,"end_line":207,"end_character":37},"in_reply_to":"12abf451_1a7c8cb4","updated":"2021-06-25 21:07:15.000000000","message":"So I think I understand what you\u0027re asking - setting the address/monitor_address, and/or port, to the same things and verify that\u0027s Ok.  I asked Michael about this case and he recommended we leave this the way it is - raise if they\u0027re set at all, that way we are consistent in always failing.","commit_id":"04601b5c7760148da8db41134ff9c49e822ad581"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"92b7306f03856042d683a29c54a3ab7508e2a5d9","unresolved":true,"context_lines":[{"line_number":391,"context_line":"                    operator_fault_string\u003dmsg)"},{"line_number":392,"context_line":"            if hm.type not in ovn_const.SUPPORTED_HEALTH_MONITOR_TYPES:"},{"line_number":393,"context_line":"                msg \u003d (_(\u0027OVN provider does not support %s \u0027"},{"line_number":394,"context_line":"                         \u0027health monitor type.\u0027) % hm.type)"},{"line_number":395,"context_line":"                raise driver_exceptions.UnsupportedOptionError("},{"line_number":396,"context_line":"                    user_fault_string\u003dmsg,"},{"line_number":397,"context_line":"                    operator_fault_string\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":64,"id":"3c3b3932_8ed333a7","line":394,"updated":"2021-06-28 15:38:08.000000000","message":"nit: would be nice to also return what are the supported types. \"... type. Supported types: %s\", hm.type, \u0027, ´.join(ovn_const.SUPPORTED_HEALTH_MONITOR_TYPES)","commit_id":"27fe538729b89135360e88091a2cfd5b8538f73f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3b05743c0016aaac68a64f9cc57eeed1ad67242b","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                    operator_fault_string\u003dmsg)"},{"line_number":392,"context_line":"            if hm.type not in ovn_const.SUPPORTED_HEALTH_MONITOR_TYPES:"},{"line_number":393,"context_line":"                msg \u003d (_(\u0027OVN provider does not support %s \u0027"},{"line_number":394,"context_line":"                         \u0027health monitor type.\u0027) % hm.type)"},{"line_number":395,"context_line":"                raise driver_exceptions.UnsupportedOptionError("},{"line_number":396,"context_line":"                    user_fault_string\u003dmsg,"},{"line_number":397,"context_line":"                    operator_fault_string\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":64,"id":"448a5885_e14551d4","line":394,"in_reply_to":"3c3b3932_8ed333a7","updated":"2021-06-28 17:42:54.000000000","message":"Done","commit_id":"27fe538729b89135360e88091a2cfd5b8538f73f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e2a62e2c61a582d5669fc57ef22d636cd3e8e9b9","unresolved":true,"context_lines":[{"line_number":325,"context_line":"                # If member exists in pool, then Update"},{"line_number":326,"context_line":"                req_type \u003d ovn_const.REQ_TYPE_MEMBER_UPDATE"},{"line_number":327,"context_line":"                # Remove all updating members so only deleted ones are left"},{"line_number":328,"context_line":"                members_to_delete.remove(member_info)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"            request_info \u003d {\u0027id\u0027: member.member_id,"},{"line_number":331,"context_line":"                            \u0027address\u0027: member.address,"}],"source_content_type":"text/x-python","patch_set":72,"id":"e67f0e86_870e6b3c","line":328,"updated":"2021-07-21 20:10:22.000000000","message":"how those changes are related to this patch?","commit_id":"9961d21af3ac42f5347c06dd3d33b617ec84ec16"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f2e08e7eaae326852f381e33544661fdf1a5cf57","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                # If member exists in pool, then Update"},{"line_number":326,"context_line":"                req_type \u003d ovn_const.REQ_TYPE_MEMBER_UPDATE"},{"line_number":327,"context_line":"                # Remove all updating members so only deleted ones are left"},{"line_number":328,"context_line":"                members_to_delete.remove(member_info)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"            request_info \u003d {\u0027id\u0027: member.member_id,"},{"line_number":331,"context_line":"                            \u0027address\u0027: member.address,"}],"source_content_type":"text/x-python","patch_set":72,"id":"c87c9a32_3e9bb04f","line":328,"in_reply_to":"e67f0e86_870e6b3c","updated":"2021-07-21 21:00:42.000000000","message":"See my comment in helper.py.","commit_id":"9961d21af3ac42f5347c06dd3d33b617ec84ec16"}],"ovn_octavia_provider/helper.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"200802f333b2f42631f7485b136c3249b767d33a","unresolved":true,"context_lines":[{"line_number":1542,"context_line":"            operating_status \u003d constants.ONLINE"},{"line_number":1543,"context_line":"            if not self._update_hm_members(ovn_lb, pool_key):"},{"line_number":1544,"context_line":"                operating_status \u003d constants.ERROR"},{"line_number":1545,"context_line":"            member_status[constants.OPERATING_STATUS] \u003d operating_status"},{"line_number":1546,"context_line":"            status[constants.MEMBERS] \u003d member_status"},{"line_number":1547,"context_line":"        return status"},{"line_number":1548,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"3f33f383_62081dd8","line":1545,"updated":"2021-03-16 22:08:45.000000000","message":"I wonder if this should change to ONLINE based on L1513, but we\u0027ll see what tempest says.","commit_id":"a9d5aad897dc042d6b1ab39381a7e35e1e9a9442"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6c26a23769c3a22e88c87bc4be24c82617c570ef","unresolved":true,"context_lines":[{"line_number":1115,"context_line":""},{"line_number":1116,"context_line":"            operating_status \u003d constants.ONLINE"},{"line_number":1117,"context_line":"            if not listener.get(constants.ADMIN_STATE_UP, True):"},{"line_number":1118,"context_line":"                operating_status \u003d constants.OFFLINE"},{"line_number":1119,"context_line":"        except Exception:"},{"line_number":1120,"context_line":"            LOG.exception(ovn_const.EXCEPTION_MSG, \"creation of listener\")"},{"line_number":1121,"context_line":"            status \u003d {"}],"source_content_type":"text/x-python","patch_set":61,"id":"163bbc2e_d89684de","line":1118,"updated":"2021-06-11 21:05:50.000000000","message":"Looking at this again, I guess these can be removed, can address in a follow-up.","commit_id":"56eb4c8b0e266e820f4e0d9a00b4d02de78975e0"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"dcf2ec748f4f82be5ebb1bd3a0d29441a820bf12","unresolved":true,"context_lines":[{"line_number":2286,"context_line":"                      row.protocol, ovn_lb.protocol)"},{"line_number":2287,"context_line":"            return"},{"line_number":2288,"context_line":""},{"line_number":2289,"context_line":"        # Do we need all this info ?"},{"line_number":2290,"context_line":"        request_info \u003d {\u0027ovn_lb\u0027: ovn_lb,"},{"line_number":2291,"context_line":"                        \u0027ip\u0027: row.ip,"},{"line_number":2292,"context_line":"                        \u0027logical_port\u0027: row.logical_port,"}],"source_content_type":"text/x-python","patch_set":62,"id":"3b06c778_c17d08b5","line":2289,"range":{"start_line":2289,"start_character":8,"end_line":2289,"end_character":36},"updated":"2021-06-24 18:44:48.000000000","message":"NIT: Add \u0027TODO\u0027 label here, so we can follow up on it later on.","commit_id":"04601b5c7760148da8db41134ff9c49e822ad581"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0544d7126341f037f6e1f81da17c163e95e013bb","unresolved":true,"context_lines":[{"line_number":2286,"context_line":"                      row.protocol, ovn_lb.protocol)"},{"line_number":2287,"context_line":"            return"},{"line_number":2288,"context_line":""},{"line_number":2289,"context_line":"        # Do we need all this info ?"},{"line_number":2290,"context_line":"        request_info \u003d {\u0027ovn_lb\u0027: ovn_lb,"},{"line_number":2291,"context_line":"                        \u0027ip\u0027: row.ip,"},{"line_number":2292,"context_line":"                        \u0027logical_port\u0027: row.logical_port,"}],"source_content_type":"text/x-python","patch_set":62,"id":"91db5237_31480bf0","line":2289,"range":{"start_line":2289,"start_character":8,"end_line":2289,"end_character":36},"in_reply_to":"3b06c778_c17d08b5","updated":"2021-06-25 21:07:15.000000000","message":"I\u0027ll just remove what\u0027s not needed.","commit_id":"04601b5c7760148da8db41134ff9c49e822ad581"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"dcf2ec748f4f82be5ebb1bd3a0d29441a820bf12","unresolved":true,"context_lines":[{"line_number":2298,"context_line":"                          \u0027info\u0027: request_info})"},{"line_number":2299,"context_line":""},{"line_number":2300,"context_line":"    def hm_update_event(self, info):"},{"line_number":2301,"context_line":"        ovn_lb \u003d info.get(\u0027ovn_lb\u0027)"},{"line_number":2302,"context_line":""},{"line_number":2303,"context_line":"        # Lookup pool and member"},{"line_number":2304,"context_line":"        pool_id \u003d None"}],"source_content_type":"text/x-python","patch_set":62,"id":"2a6d267f_55faa194","line":2301,"range":{"start_line":2301,"start_character":17,"end_line":2301,"end_character":35},"updated":"2021-06-24 18:44:48.000000000","message":"NIT: \u0027ovn_lb\u0027 better be there, so maybe do:\novn_lb \u003d info[\u0027ovn_lb\u0027]","commit_id":"04601b5c7760148da8db41134ff9c49e822ad581"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0544d7126341f037f6e1f81da17c163e95e013bb","unresolved":false,"context_lines":[{"line_number":2298,"context_line":"                          \u0027info\u0027: request_info})"},{"line_number":2299,"context_line":""},{"line_number":2300,"context_line":"    def hm_update_event(self, info):"},{"line_number":2301,"context_line":"        ovn_lb \u003d info.get(\u0027ovn_lb\u0027)"},{"line_number":2302,"context_line":""},{"line_number":2303,"context_line":"        # Lookup pool and member"},{"line_number":2304,"context_line":"        pool_id \u003d None"}],"source_content_type":"text/x-python","patch_set":62,"id":"a3b8cbca_e2d0e1c6","line":2301,"range":{"start_line":2301,"start_character":17,"end_line":2301,"end_character":35},"in_reply_to":"2a6d267f_55faa194","updated":"2021-06-25 21:07:15.000000000","message":"Done","commit_id":"04601b5c7760148da8db41134ff9c49e822ad581"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"dcf2ec748f4f82be5ebb1bd3a0d29441a820bf12","unresolved":true,"context_lines":[{"line_number":2321,"context_line":"                break"},{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"        if not member_id:"},{"line_number":2324,"context_line":"            LOG.info(\u0027Member for event not found, info: %s\u0027, info)"},{"line_number":2325,"context_line":"            return"},{"line_number":2326,"context_line":""},{"line_number":2327,"context_line":"        operating_status \u003d constants.ONLINE"}],"source_content_type":"text/x-python","patch_set":62,"id":"f46535cc_72f336e9","line":2324,"range":{"start_line":2324,"start_character":16,"end_line":2324,"end_character":20},"updated":"2021-06-24 18:44:48.000000000","message":"q: do you really mean for this to be info? Maybe debug/warn?","commit_id":"04601b5c7760148da8db41134ff9c49e822ad581"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0544d7126341f037f6e1f81da17c163e95e013bb","unresolved":true,"context_lines":[{"line_number":2321,"context_line":"                break"},{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"        if not member_id:"},{"line_number":2324,"context_line":"            LOG.info(\u0027Member for event not found, info: %s\u0027, info)"},{"line_number":2325,"context_line":"            return"},{"line_number":2326,"context_line":""},{"line_number":2327,"context_line":"        operating_status \u003d constants.ONLINE"}],"source_content_type":"text/x-python","patch_set":62,"id":"e4fa2186_755d5626","line":2324,"range":{"start_line":2324,"start_character":16,"end_line":2324,"end_character":20},"in_reply_to":"f46535cc_72f336e9","updated":"2021-06-25 21:07:15.000000000","message":"I\u0027ll change to warning.","commit_id":"04601b5c7760148da8db41134ff9c49e822ad581"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"49db428919237d367aafa915d336380281934c55","unresolved":true,"context_lines":[{"line_number":133,"context_line":"                                       col\u003dcol, match\u003dkey) from e"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def _ensure_hm_ovn_port(self, network_id, subnet_id):"},{"line_number":136,"context_line":"        # We need to have a metadata or dhcp port, or if it is not"},{"line_number":137,"context_line":"        # present we need to create one."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        neutron_client \u003d clients.get_neutron_client()"},{"line_number":140,"context_line":"        hm_port \u003d neutron_client.list_ports("}],"source_content_type":"text/x-python","patch_set":64,"id":"446a4d31_4418c3e7","line":137,"range":{"start_line":136,"start_character":51,"end_line":137,"end_character":40},"updated":"2021-06-28 15:24:47.000000000","message":"So this is the question Flavio raised - do we need to create one?  Since neutron won\u0027t know we did it could cause problems when trying to remove the subnet.  I\u0027m tempted to say we don\u0027t need to do it and should require DHCP to be enabled on the subnet.","commit_id":"27fe538729b89135360e88091a2cfd5b8538f73f"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"92b7306f03856042d683a29c54a3ab7508e2a5d9","unresolved":true,"context_lines":[{"line_number":133,"context_line":"                                       col\u003dcol, match\u003dkey) from e"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def _ensure_hm_ovn_port(self, network_id, subnet_id):"},{"line_number":136,"context_line":"        # We need to have a metadata or dhcp port, or if it is not"},{"line_number":137,"context_line":"        # present we need to create one."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        neutron_client \u003d clients.get_neutron_client()"},{"line_number":140,"context_line":"        hm_port \u003d neutron_client.list_ports("}],"source_content_type":"text/x-python","patch_set":64,"id":"d2402484_4dc76e0b","line":137,"range":{"start_line":136,"start_character":51,"end_line":137,"end_character":40},"in_reply_to":"446a4d31_4418c3e7","updated":"2021-06-28 15:38:08.000000000","message":"hmm I don\u0027t think we need to do it as ML2/OVN will create the metadata port upon the creation of a network [0]\n\n[0] https://github.com/openstack/neutron/blob/ebbf51c2b3d9ac032176b3927356f440eb71ea43/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py#L1635","commit_id":"27fe538729b89135360e88091a2cfd5b8538f73f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3b05743c0016aaac68a64f9cc57eeed1ad67242b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                                       col\u003dcol, match\u003dkey) from e"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def _ensure_hm_ovn_port(self, network_id, subnet_id):"},{"line_number":136,"context_line":"        # We need to have a metadata or dhcp port, or if it is not"},{"line_number":137,"context_line":"        # present we need to create one."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        neutron_client \u003d clients.get_neutron_client()"},{"line_number":140,"context_line":"        hm_port \u003d neutron_client.list_ports("}],"source_content_type":"text/x-python","patch_set":64,"id":"d5277434_54ccc7ed","line":137,"range":{"start_line":136,"start_character":51,"end_line":137,"end_character":40},"in_reply_to":"d2402484_4dc76e0b","updated":"2021-06-28 17:42:54.000000000","message":"Done - I\u0027ll remove the code that creates a special port.","commit_id":"27fe538729b89135360e88091a2cfd5b8538f73f"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"bd443fb7410898031f1a5878d0a9d5dea7d81c3e","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                                       col\u003dcol, match\u003dkey) from e"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def _ensure_hm_ovn_port(self, network_id, subnet_id):"},{"line_number":136,"context_line":"        # We need to have a metadata or dhcp port, or if it is not"},{"line_number":137,"context_line":"        # present we need to create one."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        neutron_client \u003d clients.get_neutron_client()"},{"line_number":140,"context_line":"        hm_port \u003d neutron_client.list_ports("}],"source_content_type":"text/x-python","patch_set":64,"id":"6232e167_6f2ee82c","line":137,"range":{"start_line":136,"start_character":51,"end_line":137,"end_character":40},"in_reply_to":"d5277434_54ccc7ed","updated":"2021-06-29 22:13:46.000000000","message":"ack!","commit_id":"27fe538729b89135360e88091a2cfd5b8538f73f"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"bd443fb7410898031f1a5878d0a9d5dea7d81c3e","unresolved":true,"context_lines":[{"line_number":2192,"context_line":"        commands.append("},{"line_number":2193,"context_line":"            self.ovn_nbdb_api.db_clear(\u0027Load_Balancer\u0027, ovn_lb.uuid,"},{"line_number":2194,"context_line":"                                       \u0027ip_port_mappings\u0027))"},{"line_number":2195,"context_line":"        commands.append("},{"line_number":2196,"context_line":"            self.ovn_nbdb_api.db_remove(\u0027Load_Balancer\u0027, ovn_lb.uuid,"},{"line_number":2197,"context_line":"                                        \u0027health_check\u0027, hm))"},{"line_number":2198,"context_line":"        self._execute_commands(commands)"},{"line_number":2199,"context_line":"        status \u003d {"},{"line_number":2200,"context_line":"            constants.LOADBALANCERS: ["}],"source_content_type":"text/x-python","patch_set":67,"id":"5071dd1e_2be8994e","line":2197,"range":{"start_line":2195,"start_character":0,"end_line":2197,"end_character":60},"updated":"2021-06-29 22:13:46.000000000","message":"You need to use hm.uuid in here. Also, it is nicer to explicitly remove the hm row explicitly as well.\nLike:\n```\n        commands.append(\n            self.ovn_nbdb_api.db_remove(\u0027Load_Balancer\u0027, ovn_lb.uuid,\n                                        \u0027health_check\u0027, hm.uuid))\n        commands.append(\n            self.ovn_nbdb_api.db_destroy(\u0027Load_Balancer_Health_Check\u0027, hm.uuid))\n        self._execute_commands(commands)\n```","commit_id":"3472471e86ecf00a262f50fdc58a20bca33222a8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f06110efa6dc3d3135c9af8622c81e96ca23636a","unresolved":true,"context_lines":[{"line_number":2192,"context_line":"        commands.append("},{"line_number":2193,"context_line":"            self.ovn_nbdb_api.db_clear(\u0027Load_Balancer\u0027, ovn_lb.uuid,"},{"line_number":2194,"context_line":"                                       \u0027ip_port_mappings\u0027))"},{"line_number":2195,"context_line":"        commands.append("},{"line_number":2196,"context_line":"            self.ovn_nbdb_api.db_remove(\u0027Load_Balancer\u0027, ovn_lb.uuid,"},{"line_number":2197,"context_line":"                                        \u0027health_check\u0027, hm))"},{"line_number":2198,"context_line":"        self._execute_commands(commands)"},{"line_number":2199,"context_line":"        status \u003d {"},{"line_number":2200,"context_line":"            constants.LOADBALANCERS: ["}],"source_content_type":"text/x-python","patch_set":67,"id":"46cffcfa_2c5ce379","line":2197,"range":{"start_line":2195,"start_character":0,"end_line":2197,"end_character":60},"in_reply_to":"5071dd1e_2be8994e","updated":"2021-06-30 22:18:40.000000000","message":"Done.  I guess I figured because this is the last reference to the health check the DB will do the right thing but being explicit is better.","commit_id":"3472471e86ecf00a262f50fdc58a20bca33222a8"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"043ad03ed23754f75a99c8a04e9926a6921a19a9","unresolved":true,"context_lines":[{"line_number":2238,"context_line":"            member_ip \u003d \u0027[%s]\u0027 % member_ip"},{"line_number":2239,"context_line":"        mappings[member_ip] \u003d member_src"},{"line_number":2240,"context_line":"        lbs \u003d self.ovn_nbdb_api.db_find_rows("},{"line_number":2241,"context_line":"            \u0027Load_Balancer\u0027, (\u0027ip_port_mappings\u0027, \u0027\u003d\u0027, mappings)).execute()"},{"line_number":2242,"context_line":"        return lbs[0] if lbs else None"},{"line_number":2243,"context_line":""},{"line_number":2244,"context_line":"    def hm_update_event_handler(self, row):"}],"source_content_type":"text/x-python","patch_set":67,"id":"d55afbb8_b236616b","line":2241,"range":{"start_line":2241,"start_character":12,"end_line":2241,"end_character":75},"updated":"2021-06-30 15:58:29.000000000","message":"Protocol should be passed in here, to account for cases when udp and tcp hms exist for the same ip addresses. I think that would be also needed because there would be multiple rows returned and the one wanted may not be the first in the list.","commit_id":"3472471e86ecf00a262f50fdc58a20bca33222a8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f06110efa6dc3d3135c9af8622c81e96ca23636a","unresolved":true,"context_lines":[{"line_number":2238,"context_line":"            member_ip \u003d \u0027[%s]\u0027 % member_ip"},{"line_number":2239,"context_line":"        mappings[member_ip] \u003d member_src"},{"line_number":2240,"context_line":"        lbs \u003d self.ovn_nbdb_api.db_find_rows("},{"line_number":2241,"context_line":"            \u0027Load_Balancer\u0027, (\u0027ip_port_mappings\u0027, \u0027\u003d\u0027, mappings)).execute()"},{"line_number":2242,"context_line":"        return lbs[0] if lbs else None"},{"line_number":2243,"context_line":""},{"line_number":2244,"context_line":"    def hm_update_event_handler(self, row):"}],"source_content_type":"text/x-python","patch_set":67,"id":"dc6eaeb8_5cb97948","line":2241,"range":{"start_line":2241,"start_character":12,"end_line":2241,"end_character":75},"in_reply_to":"d55afbb8_b236616b","updated":"2021-06-30 22:18:40.000000000","message":"Ah yes, so \"ovn_lb.protocol\", it\u0027s easy enough to add here.","commit_id":"3472471e86ecf00a262f50fdc58a20bca33222a8"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"e67e72c3ab6e3eced4df6e790638bf0d0ee12f6c","unresolved":true,"context_lines":[{"line_number":2241,"context_line":"            \u0027Load_Balancer\u0027, (\u0027ip_port_mappings\u0027, \u0027\u003d\u0027, mappings)).execute()"},{"line_number":2242,"context_line":"        return lbs[0] if lbs else None"},{"line_number":2243,"context_line":""},{"line_number":2244,"context_line":"    def hm_update_event_handler(self, row):"},{"line_number":2245,"context_line":"        try:"},{"line_number":2246,"context_line":"            ovn_lb \u003d self._get_lb_on_hm_event(row)"},{"line_number":2247,"context_line":"        except idlutils.RowNotFound:"}],"source_content_type":"text/x-python","patch_set":67,"id":"4e11ced0_4af3a398","line":2244,"range":{"start_line":2244,"start_character":8,"end_line":2244,"end_character":31},"updated":"2021-06-30 15:09:51.000000000","message":"ServiceMonitorUpdateEvent originated by Service_Monitor table in OVN sb is not a combined state, but the individual state of one or many rows that correspond to a given \"loadbalancer healthmonitor\". So additional logic will be needed to map these individual states into the operating_status documented in https://docs.openstack.org/api-ref/load-balancer/v2/?expanded\u003dremove-a-health-monitor-detail#status-codes\nRight now, just the \u0027last\u0027 event of a service_monitor row is being used.","commit_id":"3472471e86ecf00a262f50fdc58a20bca33222a8"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"043ad03ed23754f75a99c8a04e9926a6921a19a9","unresolved":true,"context_lines":[{"line_number":2294,"context_line":"        operating_status \u003d constants.ONLINE"},{"line_number":2295,"context_line":"        if info[\u0027status\u0027] \u003d\u003d [\u0027offline\u0027]:"},{"line_number":2296,"context_line":"            operating_status \u003d constants.ERROR"},{"line_number":2297,"context_line":"        status \u003d {"},{"line_number":2298,"context_line":"            constants.POOLS: ["},{"line_number":2299,"context_line":"                {constants.ID: pool_id,"},{"line_number":2300,"context_line":"                 constants.PROVISIONING_STATUS: constants.ACTIVE,"}],"source_content_type":"text/x-python","patch_set":67,"id":"57ca6140_cde1a1df","line":2297,"range":{"start_line":2297,"start_character":8,"end_line":2297,"end_character":18},"updated":"2021-06-30 15:58:29.000000000","message":"Do we also need to update constants.HEALTHMONITORS --\u003e operating_status ?","commit_id":"3472471e86ecf00a262f50fdc58a20bca33222a8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f06110efa6dc3d3135c9af8622c81e96ca23636a","unresolved":true,"context_lines":[{"line_number":2294,"context_line":"        operating_status \u003d constants.ONLINE"},{"line_number":2295,"context_line":"        if info[\u0027status\u0027] \u003d\u003d [\u0027offline\u0027]:"},{"line_number":2296,"context_line":"            operating_status \u003d constants.ERROR"},{"line_number":2297,"context_line":"        status \u003d {"},{"line_number":2298,"context_line":"            constants.POOLS: ["},{"line_number":2299,"context_line":"                {constants.ID: pool_id,"},{"line_number":2300,"context_line":"                 constants.PROVISIONING_STATUS: constants.ACTIVE,"}],"source_content_type":"text/x-python","patch_set":67,"id":"a385c7fb_5c9a99f3","line":2297,"range":{"start_line":2297,"start_character":8,"end_line":2297,"end_character":18},"in_reply_to":"57ca6140_cde1a1df","updated":"2021-06-30 22:18:40.000000000","message":"I don\u0027t think so as the Health Monitor is still operating normally, it just detected a member has changed state.  But we do need some more work here, I\u0027ve put a note in the next PS for work to do.","commit_id":"3472471e86ecf00a262f50fdc58a20bca33222a8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bc8ebb9a25f9d8022741d4659c64bad5f1ee36ef","unresolved":true,"context_lines":[{"line_number":2303,"context_line":"                # Ignore the passed member ID, we already know it\u0027s status"},{"line_number":2304,"context_line":"                if mem.split(\u0027_\u0027)[1] !\u003d member_id:"},{"line_number":2305,"context_line":"                    member \u003d self._octavia_driver_lib.get_member(member_id)"},{"line_number":2306,"context_line":"                    # If the statuses are different it is degraded"},{"line_number":2307,"context_line":"                    if member.operating_status !\u003d operating_status:"},{"line_number":2308,"context_line":"                        operating_status \u003d constants.DEGRADED"},{"line_number":2309,"context_line":"                        break"}],"source_content_type":"text/x-python","patch_set":69,"id":"23f1cea8_397ec4be","line":2306,"updated":"2021-07-09 20:42:44.000000000","message":"I\u0027m going to double-check my comment here and see how the Octavia code does it just to make sure I\u0027m not missing something, but will probably be my only change.","commit_id":"4a314732c86293a219600db026ced8938195d99b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f2e08e7eaae326852f381e33544661fdf1a5cf57","unresolved":true,"context_lines":[{"line_number":686,"context_line":"                member.member_id,"},{"line_number":687,"context_line":"                member.address,"},{"line_number":688,"context_line":"                member.protocol_port,"},{"line_number":689,"context_line":"                subnet_id)"},{"line_number":690,"context_line":"        return member_info"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def _make_listener_key_value(self, listener_port, pool_id):"}],"source_content_type":"text/x-python","patch_set":72,"id":"124ee427_f9c95497","line":689,"updated":"2021-07-21 21:00:42.000000000","message":"So the reason things changed is that we need the subnet_id to always be present.  And it actually is in any somewhat recent version of OVN. The old_convention was causing me pain with testing and so I ripped it out in a rage one night and didn\u0027t look back.  I can put it in it\u0027s own patch if it makes thing clearer.","commit_id":"9961d21af3ac42f5347c06dd3d33b617ec84ec16"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3f4a27336383f4dbfc6059afd8b30b75247a3e8e","unresolved":true,"context_lines":[{"line_number":686,"context_line":"                member.member_id,"},{"line_number":687,"context_line":"                member.address,"},{"line_number":688,"context_line":"                member.protocol_port,"},{"line_number":689,"context_line":"                subnet_id)"},{"line_number":690,"context_line":"        return member_info"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def _make_listener_key_value(self, listener_port, pool_id):"}],"source_content_type":"text/x-python","patch_set":72,"id":"fbbb2b26_6ad4003c","line":689,"in_reply_to":"124ee427_f9c95497","updated":"2021-07-22 06:29:08.000000000","message":"No, it\u0027s ok. I just wanted to know the reason :)","commit_id":"9961d21af3ac42f5347c06dd3d33b617ec84ec16"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e2a62e2c61a582d5669fc57ef22d636cd3e8e9b9","unresolved":true,"context_lines":[{"line_number":1478,"context_line":"        member_info \u003d self._get_member_info(member)"},{"line_number":1479,"context_line":"        if member_info in existing_members:"},{"line_number":1480,"context_line":"            # Member already present"},{"line_number":1481,"context_line":"            return None"},{"line_number":1482,"context_line":"        if existing_members:"},{"line_number":1483,"context_line":"            existing_members.append(member_info)"},{"line_number":1484,"context_line":"            pool_data \u003d {pool_key: \",\".join(existing_members)}"}],"source_content_type":"text/x-python","patch_set":72,"id":"1cd5df8c_1bb34aa8","line":1481,"updated":"2021-07-21 20:10:22.000000000","message":"how those changes are related to this patch?","commit_id":"9961d21af3ac42f5347c06dd3d33b617ec84ec16"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f2e08e7eaae326852f381e33544661fdf1a5cf57","unresolved":false,"context_lines":[{"line_number":1478,"context_line":"        member_info \u003d self._get_member_info(member)"},{"line_number":1479,"context_line":"        if member_info in existing_members:"},{"line_number":1480,"context_line":"            # Member already present"},{"line_number":1481,"context_line":"            return None"},{"line_number":1482,"context_line":"        if existing_members:"},{"line_number":1483,"context_line":"            existing_members.append(member_info)"},{"line_number":1484,"context_line":"            pool_data \u003d {pool_key: \",\".join(existing_members)}"}],"source_content_type":"text/x-python","patch_set":72,"id":"e207f4a0_46ec7ee1","line":1481,"in_reply_to":"1cd5df8c_1bb34aa8","updated":"2021-07-21 21:00:42.000000000","message":"See my above comment.","commit_id":"9961d21af3ac42f5347c06dd3d33b617ec84ec16"}],"ovn_octavia_provider/tests/functional/base.py":[{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"dcf2ec748f4f82be5ebb1bd3a0d29441a820bf12","unresolved":true,"context_lines":[{"line_number":24,"context_line":"from oslo_serialization import jsonutils"},{"line_number":25,"context_line":"from oslo_utils import uuidutils"},{"line_number":26,"context_line":"from ovsdbapp.schema.ovn_northbound import impl_idl as nb_idl_ovn"},{"line_number":27,"context_line":"from ovsdbapp.schema.ovn_southbound import impl_idl as sb_idl_ovn"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# NOTE(mjozefcz): We need base neutron functionals because we need"},{"line_number":30,"context_line":"# mechanism driver and l3 plugin."}],"source_content_type":"text/x-python","patch_set":62,"id":"0fd3f768_3202d1a3","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":65},"updated":"2021-06-24 18:44:48.000000000","message":"I think we should add a functional test for hm, agree?\nSomething in ovn_octavia_provider/tests/functional/test_driver.py ; but we can have that added in a separate gerrit change.","commit_id":"04601b5c7760148da8db41134ff9c49e822ad581"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0544d7126341f037f6e1f81da17c163e95e013bb","unresolved":true,"context_lines":[{"line_number":24,"context_line":"from oslo_serialization import jsonutils"},{"line_number":25,"context_line":"from oslo_utils import uuidutils"},{"line_number":26,"context_line":"from ovsdbapp.schema.ovn_northbound import impl_idl as nb_idl_ovn"},{"line_number":27,"context_line":"from ovsdbapp.schema.ovn_southbound import impl_idl as sb_idl_ovn"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# NOTE(mjozefcz): We need base neutron functionals because we need"},{"line_number":30,"context_line":"# mechanism driver and l3 plugin."}],"source_content_type":"text/x-python","patch_set":62,"id":"07840798_548a6eeb","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":65},"in_reply_to":"0fd3f768_3202d1a3","updated":"2021-06-25 21:07:15.000000000","message":"Yes, we should add something in ovn_octavia_provider/tests/functional/test_agent.py for the service_monitor callback.  I\u0027ll put the basic framework there and start looking at ways to trigger it.","commit_id":"04601b5c7760148da8db41134ff9c49e822ad581"}],"ovn_octavia_provider/tests/functional/test_agent.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"92b7306f03856042d683a29c54a3ab7508e2a5d9","unresolved":true,"context_lines":[{"line_number":45,"context_line":"            event_lock_name\u003d\u0027func_test\u0027)"},{"line_number":46,"context_line":"        ovn_nb_idl_for_events.notify_handler.watch_events(events)"},{"line_number":47,"context_line":"        ovn_nb_idl_for_events.start()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        atexit.register(da_helper.shutdown)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _test_lrp_event_handler(self, cascade\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":64,"id":"c66342cb_133aa5cf","line":48,"updated":"2021-06-28 15:38:08.000000000","message":"unrelated changes","commit_id":"27fe538729b89135360e88091a2cfd5b8538f73f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3b05743c0016aaac68a64f9cc57eeed1ad67242b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            event_lock_name\u003d\u0027func_test\u0027)"},{"line_number":46,"context_line":"        ovn_nb_idl_for_events.notify_handler.watch_events(events)"},{"line_number":47,"context_line":"        ovn_nb_idl_for_events.start()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        atexit.register(da_helper.shutdown)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _test_lrp_event_handler(self, cascade\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":64,"id":"6870f81b_1278e624","line":48,"in_reply_to":"c66342cb_133aa5cf","updated":"2021-06-28 17:42:54.000000000","message":"Done","commit_id":"27fe538729b89135360e88091a2cfd5b8538f73f"}],"ovn_octavia_provider/tests/unit/fakes.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e2a62e2c61a582d5669fc57ef22d636cd3e8e9b9","unresolved":true,"context_lines":[{"line_number":283,"context_line":"            \u0027port_security_enabled\u0027: True,"},{"line_number":284,"context_line":"            \u0027security_groups\u0027: [],"},{"line_number":285,"context_line":"            \u0027status\u0027: \u0027ACTIVE\u0027,"},{"line_number":286,"context_line":"            \u0027project_id\u0027: \u0027project-id-\u0027 + fake_uuid,"},{"line_number":287,"context_line":"        }"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        # Overwrite default attributes."}],"source_content_type":"text/x-python","patch_set":72,"id":"69fd28fa_a613b23b","line":286,"updated":"2021-07-21 20:10:22.000000000","message":"are those changes really related to that patch?","commit_id":"9961d21af3ac42f5347c06dd3d33b617ec84ec16"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f2e08e7eaae326852f381e33544661fdf1a5cf57","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            \u0027port_security_enabled\u0027: True,"},{"line_number":284,"context_line":"            \u0027security_groups\u0027: [],"},{"line_number":285,"context_line":"            \u0027status\u0027: \u0027ACTIVE\u0027,"},{"line_number":286,"context_line":"            \u0027project_id\u0027: \u0027project-id-\u0027 + fake_uuid,"},{"line_number":287,"context_line":"        }"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        # Overwrite default attributes."}],"source_content_type":"text/x-python","patch_set":72,"id":"47d76b02_0a43c300","line":286,"in_reply_to":"69fd28fa_a613b23b","updated":"2021-07-21 21:00:42.000000000","message":"I remember having to change these to fix a unit test failure in a new test, but reverting things seems Ok, so I\u0027ll change them back.","commit_id":"9961d21af3ac42f5347c06dd3d33b617ec84ec16"}],"ovn_octavia_provider/tests/unit/test_helper.py":[{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"dcf2ec748f4f82be5ebb1bd3a0d29441a820bf12","unresolved":true,"context_lines":[{"line_number":2413,"context_line":"        self.assertFalse(ret)"},{"line_number":2414,"context_line":""},{"line_number":2415,"context_line":"    @mock.patch(\u0027ovn_octavia_provider.common.clients.get_neutron_client\u0027)"},{"line_number":2416,"context_line":"    @mock.patch.object(ovn_helper.OvnProviderHelper, \u0027_update_hm_members\u0027)"},{"line_number":2417,"context_line":"    @mock.patch.object(ovn_helper.OvnProviderHelper, \u0027_find_ovn_lb_by_pool_id\u0027)"},{"line_number":2418,"context_line":"    def _test_hm_create(self, protocol, members, folbpi, uhm, net_cli):"},{"line_number":2419,"context_line":"        fake_subnet \u003d fakes.FakeSubnet.create_one_subnet()"}],"source_content_type":"text/x-python","patch_set":62,"id":"90dd4904_5e06e035","line":2416,"range":{"start_line":2416,"start_character":54,"end_line":2416,"end_character":72},"updated":"2021-06-24 18:44:48.000000000","message":"Suggestion: I think it would be good to test _update_hm_members since it has the logic for creating a port or using the metadata. wdyt?","commit_id":"04601b5c7760148da8db41134ff9c49e822ad581"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0544d7126341f037f6e1f81da17c163e95e013bb","unresolved":true,"context_lines":[{"line_number":2413,"context_line":"        self.assertFalse(ret)"},{"line_number":2414,"context_line":""},{"line_number":2415,"context_line":"    @mock.patch(\u0027ovn_octavia_provider.common.clients.get_neutron_client\u0027)"},{"line_number":2416,"context_line":"    @mock.patch.object(ovn_helper.OvnProviderHelper, \u0027_update_hm_members\u0027)"},{"line_number":2417,"context_line":"    @mock.patch.object(ovn_helper.OvnProviderHelper, \u0027_find_ovn_lb_by_pool_id\u0027)"},{"line_number":2418,"context_line":"    def _test_hm_create(self, protocol, members, folbpi, uhm, net_cli):"},{"line_number":2419,"context_line":"        fake_subnet \u003d fakes.FakeSubnet.create_one_subnet()"}],"source_content_type":"text/x-python","patch_set":62,"id":"81f8ccdd_d901682c","line":2416,"range":{"start_line":2416,"start_character":54,"end_line":2416,"end_character":72},"in_reply_to":"90dd4904_5e06e035","updated":"2021-06-25 21:07:15.000000000","message":"I know it\u0027s not obvious, but I do test this in some of the other hm_create tests below, by mocking deeper down in the calls.  It\u0027s been a while since I wrote these tests but I verified in the coverage report the lines are hit.  I will look there to see if I can cover more code as helper.py has the most un-covered lines.","commit_id":"04601b5c7760148da8db41134ff9c49e822ad581"}],"zuul.d/project.yaml":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e2a62e2c61a582d5669fc57ef22d636cd3e8e9b9","unresolved":true,"context_lines":[{"line_number":3,"context_line":"      - publish-openstack-docs-pti"},{"line_number":4,"context_line":"      - release-notes-jobs-python3"},{"line_number":5,"context_line":"      - check-requirements"},{"line_number":6,"context_line":"      - openstack-cover-jobs"},{"line_number":7,"context_line":"      - openstack-python3-xena-jobs-neutron"},{"line_number":8,"context_line":"      - openstack-lower-constraints-jobs-neutron"},{"line_number":9,"context_line":"    check:"}],"source_content_type":"text/x-yaml","patch_set":72,"id":"c7738ca5_f3a50ec6","line":6,"updated":"2021-07-21 20:10:22.000000000","message":"is this related to that patch?","commit_id":"9961d21af3ac42f5347c06dd3d33b617ec84ec16"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f2e08e7eaae326852f381e33544661fdf1a5cf57","unresolved":false,"context_lines":[{"line_number":3,"context_line":"      - publish-openstack-docs-pti"},{"line_number":4,"context_line":"      - release-notes-jobs-python3"},{"line_number":5,"context_line":"      - check-requirements"},{"line_number":6,"context_line":"      - openstack-cover-jobs"},{"line_number":7,"context_line":"      - openstack-python3-xena-jobs-neutron"},{"line_number":8,"context_line":"      - openstack-lower-constraints-jobs-neutron"},{"line_number":9,"context_line":"    check:"}],"source_content_type":"text/x-yaml","patch_set":72,"id":"1417927f_c3548934","line":6,"in_reply_to":"c7738ca5_f3a50ec6","updated":"2021-07-21 21:00:42.000000000","message":"Isn\u0027t specifically related, just wanted to make sure that when adding this much code I didn\u0027t fall below the current 90% threshold, which wasn\u0027t being enforced since the job wasn\u0027t being run.  Moved to another open review that was increasing code coverage.\n\nhttps://review.opendev.org/c/openstack/ovn-octavia-provider/+/800823","commit_id":"9961d21af3ac42f5347c06dd3d33b617ec84ec16"}]}
