)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"508f399fae5d32430f9c613567e31755346605b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"02e469a8_5775917a","updated":"2025-07-10 12:41:04.000000000","message":"-1 to raise awareness of my question","commit_id":"ab327252b674dab5c1c628cbcefc488a48fa3b46"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f96c0782db1400e0f18270618910afc11b3dbadb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"33f468fc_479d8080","updated":"2025-07-11 21:19:08.000000000","message":"We should have a bug associated with this that describes the scenario.\nIt will also need test coverage and a release note","commit_id":"ab327252b674dab5c1c628cbcefc488a48fa3b46"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"0aecdec17d339a071814ea51443f9ca3e2483590","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e9cd78a9_7e78ff6f","updated":"2026-03-01 00:42:04.000000000","message":"I think the formatting of the error message can be made easier to read. Otherwise I think the change looks good","commit_id":"77224379e12df4347ca0336c592cf59bd972a9ef"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"ef8eb27b6b62436ba6cec776b311054b501141be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"62fd0758_ecaaa9fe","updated":"2026-03-02 09:21:20.000000000","message":"Looks good, thanks for making the changes","commit_id":"9052b4e7203af8fdd8e2116599f2669c0496ba97"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"8921316c9e6645faf4ceeb6b1786dc3863fd9a2d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bb13fc13_51c4caba","updated":"2026-03-24 18:23:14.000000000","message":"recheck (CI now fine)","commit_id":"9052b4e7203af8fdd8e2116599f2669c0496ba97"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"abe8968d986fa1172c3670b21aa61625559d432a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d3980e91_bc3c8b0e","updated":"2026-03-24 10:51:57.000000000","message":"recheck (octavia-v2-dsvm-scenario-traffic-ops - CANCELED)","commit_id":"9052b4e7203af8fdd8e2116599f2669c0496ba97"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"37100b4a8582dab90c7345482da4be8551a23cbd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2183e3a1_917f20f5","updated":"2026-03-24 10:51:54.000000000","message":"recheck - timeout failure probably from busy CI machines","commit_id":"9052b4e7203af8fdd8e2116599f2669c0496ba97"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"dd1cbe9aaf80ce1029b645d5146cc22abd936cdf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c14a9b45_9c2af55f","updated":"2026-03-02 16:06:34.000000000","message":"recheck octavia-v2-dsvm-scenario-non-traffic-ops-jobboard timeout","commit_id":"9052b4e7203af8fdd8e2116599f2669c0496ba97"}],"octavia/api/v2/controllers/load_balancer.py":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"508f399fae5d32430f9c613567e31755346605b8","unresolved":true,"context_lines":[{"line_number":133,"context_line":"                for subnet_id in network.subnets:"},{"line_number":134,"context_line":"                    try:"},{"line_number":135,"context_line":"                        subnet \u003d network_driver.get_subnet(subnet_id)"},{"line_number":136,"context_line":"                    except network_base.SubnetNotFound as e:"},{"line_number":137,"context_line":"                        raise exceptions.ValidationException("},{"line_number":138,"context_line":"                            detail\u003d_(\"Subnet not found\")) from e"},{"line_number":139,"context_line":"                    if validate.is_ip_member_of_cidr(load_balancer.vip_address,"}],"source_content_type":"text/x-python","patch_set":1,"id":"c64835b4_8ef341b7","line":136,"range":{"start_line":136,"start_character":27,"end_line":136,"end_character":54},"updated":"2025-07-10 12:41:04.000000000","message":"quick question: under what circumstances the network_driver throws a SubnetNotFound exception? the list of subnets comes from the same driver (network is fetched line 126)\nis it some kind of race condition?","commit_id":"ab327252b674dab5c1c628cbcefc488a48fa3b46"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"122905e5ae2d271292c264fa74a51cebf69be6a4","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                for subnet_id in network.subnets:"},{"line_number":134,"context_line":"                    try:"},{"line_number":135,"context_line":"                        subnet \u003d network_driver.get_subnet(subnet_id)"},{"line_number":136,"context_line":"                    except network_base.SubnetNotFound as e:"},{"line_number":137,"context_line":"                        raise exceptions.ValidationException("},{"line_number":138,"context_line":"                            detail\u003d_(\"Subnet not found\")) from e"},{"line_number":139,"context_line":"                    if validate.is_ip_member_of_cidr(load_balancer.vip_address,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa341117_649818ea","line":136,"range":{"start_line":136,"start_character":27,"end_line":136,"end_character":54},"in_reply_to":"613274ac_4ec0b8de","updated":"2026-02-27 14:32:57.000000000","message":"Done","commit_id":"ab327252b674dab5c1c628cbcefc488a48fa3b46"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"f92528c9541714a6d230c5fa017df1f8ebe4aac8","unresolved":true,"context_lines":[{"line_number":133,"context_line":"                for subnet_id in network.subnets:"},{"line_number":134,"context_line":"                    try:"},{"line_number":135,"context_line":"                        subnet \u003d network_driver.get_subnet(subnet_id)"},{"line_number":136,"context_line":"                    except network_base.SubnetNotFound as e:"},{"line_number":137,"context_line":"                        raise exceptions.ValidationException("},{"line_number":138,"context_line":"                            detail\u003d_(\"Subnet not found\")) from e"},{"line_number":139,"context_line":"                    if validate.is_ip_member_of_cidr(load_balancer.vip_address,"}],"source_content_type":"text/x-python","patch_set":1,"id":"613274ac_4ec0b8de","line":136,"range":{"start_line":136,"start_character":27,"end_line":136,"end_character":54},"in_reply_to":"c64835b4_8ef341b7","updated":"2025-08-19 07:24:28.000000000","message":"Unfortunately I don\u0027t have any debug information about this change anymore but it was related to when I was doing the testing regarding running Octavia with only service role and not admin role.\n\nIt tries to lookup a subnet but did not have permissions and thus resulting in a SubnetNotFound exception here but we didn\u0027t handle that so instead we returned a HTTP 500 from Octavia instead of 400 Bad Request.","commit_id":"ab327252b674dab5c1c628cbcefc488a48fa3b46"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"0aecdec17d339a071814ea51443f9ca3e2483590","unresolved":true,"context_lines":[{"line_number":135,"context_line":"                    try:"},{"line_number":136,"context_line":"                        subnet \u003d network_driver.get_subnet(subnet_id)"},{"line_number":137,"context_line":"                    except network_base.SubnetNotFound as e:"},{"line_number":138,"context_line":"                        msg \u003d _(subnet_errmsg % {\u0027subnet_id\u0027: subnet_id})"},{"line_number":139,"context_line":"                        raise exceptions.ValidationException(detail\u003dmsg) from e"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"                    if validate.is_ip_member_of_cidr(load_balancer.vip_address,"}],"source_content_type":"text/x-python","patch_set":2,"id":"2a0b962f_5488a1ea","line":138,"updated":"2026-03-01 00:42:04.000000000","message":"You could probably use an f string here, or just use a simple string formatting without the keyword formatting","commit_id":"77224379e12df4347ca0336c592cf59bd972a9ef"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"efdd1e8fb8c0ab9fc533a7dc953594a6d5500014","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                    try:"},{"line_number":136,"context_line":"                        subnet \u003d network_driver.get_subnet(subnet_id)"},{"line_number":137,"context_line":"                    except network_base.SubnetNotFound as e:"},{"line_number":138,"context_line":"                        msg \u003d _(subnet_errmsg % {\u0027subnet_id\u0027: subnet_id})"},{"line_number":139,"context_line":"                        raise exceptions.ValidationException(detail\u003dmsg) from e"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"                    if validate.is_ip_member_of_cidr(load_balancer.vip_address,"}],"source_content_type":"text/x-python","patch_set":2,"id":"4d34a9b2_e994cb28","line":138,"in_reply_to":"2a0b962f_5488a1ea","updated":"2026-03-02 08:50:30.000000000","message":"Done, I could not find any existing usage of f-strings for i18n translated strings in the codebase to I resorted to using string interpolation instead which there seems to be a lot of usages of to keep it consistent.\n\nThere is no already translated/existing \"Subnet %(subnet_id)s not found\" i18n string so we should not end up with double translation here.","commit_id":"77224379e12df4347ca0336c592cf59bd972a9ef"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"0aecdec17d339a071814ea51443f9ca3e2483590","unresolved":true,"context_lines":[{"line_number":177,"context_line":"                    try:"},{"line_number":178,"context_line":"                        subnet \u003d network_driver.get_subnet(subnet_id)"},{"line_number":179,"context_line":"                    except network_base.SubnetNotFound as e:"},{"line_number":180,"context_line":"                        msg \u003d _(subnet_errmsg % {\u0027subnet_id\u0027: subnet_id})"},{"line_number":181,"context_line":"                        raise exceptions.ValidationException(detail\u003dmsg) from e"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"                    if subnet.ip_version \u003d\u003d 4:"}],"source_content_type":"text/x-python","patch_set":2,"id":"30b67705_fc13abd7","line":180,"updated":"2026-03-01 00:42:04.000000000","message":"Same as above","commit_id":"77224379e12df4347ca0336c592cf59bd972a9ef"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"efdd1e8fb8c0ab9fc533a7dc953594a6d5500014","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                    try:"},{"line_number":178,"context_line":"                        subnet \u003d network_driver.get_subnet(subnet_id)"},{"line_number":179,"context_line":"                    except network_base.SubnetNotFound as e:"},{"line_number":180,"context_line":"                        msg \u003d _(subnet_errmsg % {\u0027subnet_id\u0027: subnet_id})"},{"line_number":181,"context_line":"                        raise exceptions.ValidationException(detail\u003dmsg) from e"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"                    if subnet.ip_version \u003d\u003d 4:"}],"source_content_type":"text/x-python","patch_set":2,"id":"705c299e_443100f5","line":180,"in_reply_to":"30b67705_fc13abd7","updated":"2026-03-02 08:50:30.000000000","message":"Done","commit_id":"77224379e12df4347ca0336c592cf59bd972a9ef"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"0aecdec17d339a071814ea51443f9ca3e2483590","unresolved":true,"context_lines":[{"line_number":254,"context_line":"            try:"},{"line_number":255,"context_line":"                used_subnets[subnet_id] \u003d network_driver.get_subnet(subnet_id)"},{"line_number":256,"context_line":"            except network_base.SubnetNotFound as e:"},{"line_number":257,"context_line":"                msg \u003d _(\"Subnet %(subnet_id)s not found\" %"},{"line_number":258,"context_line":"                        {\u0027subnet_id\u0027: subnet_id})"},{"line_number":259,"context_line":"                raise exceptions.ValidationException(detail\u003dmsg) from e"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"e3ef29fb_e78a5db1","line":257,"updated":"2026-03-01 00:42:04.000000000","message":"Same as above","commit_id":"77224379e12df4347ca0336c592cf59bd972a9ef"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"efdd1e8fb8c0ab9fc533a7dc953594a6d5500014","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            try:"},{"line_number":255,"context_line":"                used_subnets[subnet_id] \u003d network_driver.get_subnet(subnet_id)"},{"line_number":256,"context_line":"            except network_base.SubnetNotFound as e:"},{"line_number":257,"context_line":"                msg \u003d _(\"Subnet %(subnet_id)s not found\" %"},{"line_number":258,"context_line":"                        {\u0027subnet_id\u0027: subnet_id})"},{"line_number":259,"context_line":"                raise exceptions.ValidationException(detail\u003dmsg) from e"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"d067555e_682de5c5","line":257,"in_reply_to":"e3ef29fb_e78a5db1","updated":"2026-03-02 08:50:30.000000000","message":"Done","commit_id":"77224379e12df4347ca0336c592cf59bd972a9ef"}]}
