)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"296f559bb7e212d14506ea41d39d74cb894ae74d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0e1b5a3e_89bf950d","updated":"2023-10-17 17:11:40.000000000","message":"recheck ovn-octavia-provider-tempest-release  unrelated","commit_id":"bef0a2cb204c0481b6b6691111b6a9c816d94114"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"2d0fa2be4f5d982669d1a04b070fd3641e6ec64e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"845a902d_72247137","updated":"2023-10-18 14:43:38.000000000","message":"recheck ovn-octavia-provider-functional-master unrelated","commit_id":"079150ea705f77c914a1ec87e9b82e285bb232b5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"85370ea51f49779d7a2b1fbd848c87bd51d19e38","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d444c7b4_48c57cc9","updated":"2023-10-18 13:46:02.000000000","message":"recheck ovn-octavia-provider-functional-master unrelated","commit_id":"079150ea705f77c914a1ec87e9b82e285bb232b5"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"a5c984504904b78ef7248c6346b7de23292d684e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"d8b47108_a5bc0184","updated":"2023-10-19 07:48:34.000000000","message":"just one nit about the messaging","commit_id":"2be13a415b2012c0441c0dfe5b1f7ac7a2197c2f"}],"ovn_octavia_provider/agent.py":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"2d8dfeb780176da659bd45d89d7005ce4039cc38","unresolved":true,"context_lines":[{"line_number":51,"context_line":"    ovn_sb_idl_for_events.notify_handler.watch_events(sb_events)"},{"line_number":52,"context_line":"    ovn_sb_idl_for_events.start()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    # Maintenance task init"},{"line_number":55,"context_line":"    maintenance_thread \u003d maintenance.MaintenanceThread()"},{"line_number":56,"context_line":"    maintenance_thread.add_periodics("},{"line_number":57,"context_line":"        maintenance.DBInconsistenciesPeriodics())"}],"source_content_type":"text/x-python","patch_set":4,"id":"407155fe_3bd74185","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":27},"updated":"2023-10-18 12:21:31.000000000","message":"perhaps add a Note about why this is added here","commit_id":"9f88b96933ecf6b858cce1b6106b48db9a086492"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"e7432148be9f9dd380d6120518817f457650c4d3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    ovn_sb_idl_for_events.notify_handler.watch_events(sb_events)"},{"line_number":52,"context_line":"    ovn_sb_idl_for_events.start()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    # Maintenance task init"},{"line_number":55,"context_line":"    maintenance_thread \u003d maintenance.MaintenanceThread()"},{"line_number":56,"context_line":"    maintenance_thread.add_periodics("},{"line_number":57,"context_line":"        maintenance.DBInconsistenciesPeriodics())"}],"source_content_type":"text/x-python","patch_set":4,"id":"ee962525_dda139a4","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":27},"in_reply_to":"407155fe_3bd74185","updated":"2023-10-18 12:40:54.000000000","message":"Done","commit_id":"9f88b96933ecf6b858cce1b6106b48db9a086492"}],"ovn_octavia_provider/maintenance.py":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"dad4b0808e9759eafde0415532506817c568f482","unresolved":true,"context_lines":[{"line_number":88,"context_line":"                    port.id, device_owner\u003dovn_const.OVN_LB_HM_PORT_DISTRIBUTED,"},{"line_number":89,"context_line":"                    device_id\u003dport.name)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"                # NOTE(froyo): Check that the port is now of type LOCALPORT in"},{"line_number":92,"context_line":"                # the OVN NB DB or perform a rollback in other cases. Such"},{"line_number":93,"context_line":"                # cases could indicate that Neutron is in the process of being"},{"line_number":94,"context_line":"                # updated or that the user has forgotten to update Neutron to a"},{"line_number":95,"context_line":"                # version that supports this change"},{"line_number":96,"context_line":"                port_ovn \u003d self.ovn_nbdb_api.db_find_rows("},{"line_number":97,"context_line":"                    \"Logical_Switch_Port\", (\"name\", \"\u003d\", port.id)).execute("},{"line_number":98,"context_line":"                        check_error\u003dTrue)"},{"line_number":99,"context_line":"                if len(port_ovn) and port_ovn[0].type !\u003d \u0027localport\u0027:"},{"line_number":100,"context_line":"                    LOG.debug(\u0027Maintenance task: port %s changed but looks \u0027"},{"line_number":101,"context_line":"                              \u0027like Neutron does not support this value, or \u0027"},{"line_number":102,"context_line":"                              \u0027maybe is updating version, restoring to old \u0027"},{"line_number":103,"context_line":"                              \u0027values and waiting another iteration of this \u0027"},{"line_number":104,"context_line":"                              \u0027task\u0027, port.id)"},{"line_number":105,"context_line":"                    neutron_client.update_port("},{"line_number":106,"context_line":"                        port.id, device_owner\u003dn_const.DEVICE_OWNER_DISTRIBUTED,"},{"line_number":107,"context_line":"                        device_id\u003d\u0027\u0027)"},{"line_number":108,"context_line":"        LOG.debug(\u0027Maintenance task: Changing device_owner and adding \u0027"},{"line_number":109,"context_line":"                  \u0027device_id to OVN LB HM ports finished.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"67aabe2a_be1bce51","line":107,"range":{"start_line":91,"start_character":0,"end_line":107,"end_character":37},"updated":"2023-10-18 05:36:53.000000000","message":"there may be several ports of this type and all are going to behave the same, perhaps worth to define a variable that is set for the first port and not doing again the check for the rest.\nActually, perhaps even better, if that is the case you should directly exit the method after this iteration as there is no need to change the rest","commit_id":"bef0a2cb204c0481b6b6691111b6a9c816d94114"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"45aa2f80280c3f0333fc307cd62d45bb5ea1928b","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                    port.id, device_owner\u003dovn_const.OVN_LB_HM_PORT_DISTRIBUTED,"},{"line_number":89,"context_line":"                    device_id\u003dport.name)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"                # NOTE(froyo): Check that the port is now of type LOCALPORT in"},{"line_number":92,"context_line":"                # the OVN NB DB or perform a rollback in other cases. Such"},{"line_number":93,"context_line":"                # cases could indicate that Neutron is in the process of being"},{"line_number":94,"context_line":"                # updated or that the user has forgotten to update Neutron to a"},{"line_number":95,"context_line":"                # version that supports this change"},{"line_number":96,"context_line":"                port_ovn \u003d self.ovn_nbdb_api.db_find_rows("},{"line_number":97,"context_line":"                    \"Logical_Switch_Port\", (\"name\", \"\u003d\", port.id)).execute("},{"line_number":98,"context_line":"                        check_error\u003dTrue)"},{"line_number":99,"context_line":"                if len(port_ovn) and port_ovn[0].type !\u003d \u0027localport\u0027:"},{"line_number":100,"context_line":"                    LOG.debug(\u0027Maintenance task: port %s changed but looks \u0027"},{"line_number":101,"context_line":"                              \u0027like Neutron does not support this value, or \u0027"},{"line_number":102,"context_line":"                              \u0027maybe is updating version, restoring to old \u0027"},{"line_number":103,"context_line":"                              \u0027values and waiting another iteration of this \u0027"},{"line_number":104,"context_line":"                              \u0027task\u0027, port.id)"},{"line_number":105,"context_line":"                    neutron_client.update_port("},{"line_number":106,"context_line":"                        port.id, device_owner\u003dn_const.DEVICE_OWNER_DISTRIBUTED,"},{"line_number":107,"context_line":"                        device_id\u003d\u0027\u0027)"},{"line_number":108,"context_line":"        LOG.debug(\u0027Maintenance task: Changing device_owner and adding \u0027"},{"line_number":109,"context_line":"                  \u0027device_id to OVN LB HM ports finished.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9eee9766_90f6463f","line":107,"range":{"start_line":91,"start_character":0,"end_line":107,"end_character":37},"in_reply_to":"67aabe2a_be1bce51","updated":"2023-10-18 07:10:36.000000000","message":"good catch! make total sense!","commit_id":"bef0a2cb204c0481b6b6691111b6a9c816d94114"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"c47b9721efade1a1c388af08aa544b0272b62f68","unresolved":true,"context_lines":[{"line_number":111,"context_line":"                            device_id\u003d\u0027\u0027)"},{"line_number":112,"context_line":"                        # Break the loop as do not make sense change the rest"},{"line_number":113,"context_line":"                        break"},{"line_number":114,"context_line":"                check_neutron_support_new_device_owner \u003d False"},{"line_number":115,"context_line":"        LOG.debug(\u0027Maintenance task: Changing device_owner and adding \u0027"},{"line_number":116,"context_line":"                  \u0027device_id to OVN LB HM ports finished.\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"a476e677_b2b17b92","line":114,"range":{"start_line":114,"start_character":16,"end_line":114,"end_character":62},"updated":"2023-10-18 12:53:05.000000000","message":"it is wrongly indentated, this needs to be inside the if of like 97","commit_id":"278a0ee0d5a9fb2e3a686bd74cee0b487aee9ad5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"f26df9967618f2f2e0ccaa479a14a848036fb5bd","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                            device_id\u003d\u0027\u0027)"},{"line_number":112,"context_line":"                        # Break the loop as do not make sense change the rest"},{"line_number":113,"context_line":"                        break"},{"line_number":114,"context_line":"                check_neutron_support_new_device_owner \u003d False"},{"line_number":115,"context_line":"        LOG.debug(\u0027Maintenance task: Changing device_owner and adding \u0027"},{"line_number":116,"context_line":"                  \u0027device_id to OVN LB HM ports finished.\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"f7194586_321a960c","line":114,"range":{"start_line":114,"start_character":16,"end_line":114,"end_character":62},"in_reply_to":"a476e677_b2b17b92","updated":"2023-10-18 12:58:41.000000000","message":"good eye! done!","commit_id":"278a0ee0d5a9fb2e3a686bd74cee0b487aee9ad5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"98466b2a4922146b11f4cfd6cb13953b64901ed7","unresolved":true,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"#    Copyright 2023 Red Hat, Inc. All rights reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":7,"id":"cc3c20d4_f2f41e18","line":1,"updated":"2023-10-18 15:04:21.000000000","message":"why this empty line here?","commit_id":"079150ea705f77c914a1ec87e9b82e285bb232b5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"116ceec9a81dae53d1f0895b7acefe2e3ed9fa0c","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"#    Copyright 2023 Red Hat, Inc. All rights reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":7,"id":"470f3a40_91574473","line":1,"in_reply_to":"cc3c20d4_f2f41e18","updated":"2023-10-18 15:28:03.000000000","message":"Done","commit_id":"079150ea705f77c914a1ec87e9b82e285bb232b5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"98466b2a4922146b11f4cfd6cb13953b64901ed7","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from ovn_octavia_provider.common import clients"},{"line_number":27,"context_line":"from ovn_octavia_provider.common import constants as ovn_const"},{"line_number":28,"context_line":"from ovn_octavia_provider.ovsdb import impl_idl_ovn"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d cfg.CONF  # Gets Octavia Conf as it runs under o-api domain"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9271e261_bb5acd4a","line":28,"updated":"2023-10-18 15:04:21.000000000","message":"nit: please fix imports and put it into 3 groups:\n1. imports from stdlib,\n2. imports from 3rd party libs\n3. imports modules from this repo","commit_id":"079150ea705f77c914a1ec87e9b82e285bb232b5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"116ceec9a81dae53d1f0895b7acefe2e3ed9fa0c","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from ovn_octavia_provider.common import clients"},{"line_number":27,"context_line":"from ovn_octavia_provider.common import constants as ovn_const"},{"line_number":28,"context_line":"from ovn_octavia_provider.ovsdb import impl_idl_ovn"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d cfg.CONF  # Gets Octavia Conf as it runs under o-api domain"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"f72a3e2f_e942d6b7","line":28,"in_reply_to":"9271e261_bb5acd4a","updated":"2023-10-18 15:28:03.000000000","message":"Done","commit_id":"079150ea705f77c914a1ec87e9b82e285bb232b5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"98466b2a4922146b11f4cfd6cb13953b64901ed7","unresolved":true,"context_lines":[{"line_number":113,"context_line":"                        break"},{"line_number":114,"context_line":"                    check_neutron_support_new_device_owner \u003d False"},{"line_number":115,"context_line":"        LOG.debug(\u0027Maintenance task: Changing device_owner and adding \u0027"},{"line_number":116,"context_line":"                  \u0027device_id to OVN LB HM ports finished.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1b4b079b_bbff432e","line":116,"updated":"2023-10-18 15:04:21.000000000","message":"I\u0027m not sure but shouldn\u0027t You run \"periodics.NeverAgain()\" at the end?","commit_id":"079150ea705f77c914a1ec87e9b82e285bb232b5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"116ceec9a81dae53d1f0895b7acefe2e3ed9fa0c","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                        break"},{"line_number":114,"context_line":"                    check_neutron_support_new_device_owner \u003d False"},{"line_number":115,"context_line":"        LOG.debug(\u0027Maintenance task: Changing device_owner and adding \u0027"},{"line_number":116,"context_line":"                  \u0027device_id to OVN LB HM ports finished.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"57c7dcab_88896f79","line":116,"in_reply_to":"1b4b079b_bbff432e","updated":"2023-10-18 15:28:03.000000000","message":"This is done on purpose, to ensure that if the version of Neutron that knows how to handle this new device_owner is updated after the task attempts to make the change, there will be more iterations of the task that modify the ports once neutron is updated. \n\nBut after rethinking it makes sense to call periodics.NeverAgain() if we can\u0027t find any ports in the initial scan L78.","commit_id":"079150ea705f77c914a1ec87e9b82e285bb232b5"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"a5c984504904b78ef7248c6346b7de23292d684e","unresolved":true,"context_lines":[{"line_number":112,"context_line":"                    check_neutron_support_new_device_owner \u003d False"},{"line_number":113,"context_line":"        else:"},{"line_number":114,"context_line":"            # NOTE(froyo): No ports found to update, or all of them done."},{"line_number":115,"context_line":"            LOG.debug(\u0027Maintenance task: Changing device_owner and adding \u0027"},{"line_number":116,"context_line":"                      \u0027device_id to OVN LB HM ports finished.\u0027)"},{"line_number":117,"context_line":"            raise periodics.NeverAgain()"},{"line_number":118,"context_line":"        LOG.debug(\u0027Maintenance task: Changing device_owner and adding \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"e067e2a3_c9fe5f54","line":115,"range":{"start_line":115,"start_character":40,"end_line":115,"end_character":49},"updated":"2023-10-19 07:48:34.000000000","message":"perhaps better than \"changing\", it should be \"Device_onwer and device_id checked for OVN LB HM ports.\"\n\nSame for the other log.debugs (L84, L118)","commit_id":"2be13a415b2012c0441c0dfe5b1f7ac7a2197c2f"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"d0c23322a71b6f9b3e31481637cd5e20ee867bb2","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                    check_neutron_support_new_device_owner \u003d False"},{"line_number":113,"context_line":"        else:"},{"line_number":114,"context_line":"            # NOTE(froyo): No ports found to update, or all of them done."},{"line_number":115,"context_line":"            LOG.debug(\u0027Maintenance task: Changing device_owner and adding \u0027"},{"line_number":116,"context_line":"                      \u0027device_id to OVN LB HM ports finished.\u0027)"},{"line_number":117,"context_line":"            raise periodics.NeverAgain()"},{"line_number":118,"context_line":"        LOG.debug(\u0027Maintenance task: Changing device_owner and adding \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"9eca590f_2e354398","line":115,"range":{"start_line":115,"start_character":40,"end_line":115,"end_character":49},"in_reply_to":"e067e2a3_c9fe5f54","updated":"2023-10-19 08:36:46.000000000","message":"Done","commit_id":"2be13a415b2012c0441c0dfe5b1f7ac7a2197c2f"}]}
