)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8679032bd9b8bf23ce3b3e940e9773a9761dfd32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"349c9dfe_946ba18e","updated":"2026-08-05 09:32:30.000000000","message":"I\u0027m trying to get rid of those `_get_attrs` methods. Let\u0027s try to avoid building on this","commit_id":"e4286537d34358288a5d98da60470569688b82b2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"af25a98d94dbebebb797aebfb9c613076b5b502b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"591b512b_d25fb0f9","updated":"2026-07-30 14:22:54.000000000","message":"recheck - post failure - logs are gone now","commit_id":"e4286537d34358288a5d98da60470569688b82b2"}],"openstackclient/network/v2/subnet.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8679032bd9b8bf23ce3b3e940e9773a9761dfd32","unresolved":true,"context_lines":[{"line_number":302,"context_line":"    ):"},{"line_number":303,"context_line":"        attrs[\u0027service_types\u0027] \u003d parsed_args.service_types"},{"line_number":304,"context_line":"    if parsed_args.description is not None:"},{"line_number":305,"context_line":"        attrs[\u0027description\u0027] \u003d parsed_args.description"},{"line_number":306,"context_line":"    if \u0027leak_routes\u0027 in parsed_args and parsed_args.leak_routes:"},{"line_number":307,"context_line":"        attrs[\u0027leak_routes\u0027] \u003d True"},{"line_number":308,"context_line":"    elif \u0027no_leak_routes\u0027 in parsed_args and parsed_args.no_leak_routes:"},{"line_number":309,"context_line":"        attrs[\u0027leak_routes\u0027] \u003d False"},{"line_number":310,"context_line":"    return attrs"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"164ce901_10f84c3c","line":309,"range":{"start_line":305,"start_character":54,"end_line":309,"end_character":36},"updated":"2026-08-05 09:32:30.000000000","message":"This is only used in CreateSubnet. Can you move this there (after the call to `_get_attrs`) to make that obvious? Also, if you use a common dest (see below) this can be simplified to:\n\n```\n    if parsed_args.leak_routes is not None:\n        attrs[\u0027leak_routes\u0027] \u003d parsed_args.leak_routes\n```","commit_id":"e4286537d34358288a5d98da60470569688b82b2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"653b8dc037a821e73af1388355881e417cf2790c","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    ):"},{"line_number":303,"context_line":"        attrs[\u0027service_types\u0027] \u003d parsed_args.service_types"},{"line_number":304,"context_line":"    if parsed_args.description is not None:"},{"line_number":305,"context_line":"        attrs[\u0027description\u0027] \u003d parsed_args.description"},{"line_number":306,"context_line":"    if \u0027leak_routes\u0027 in parsed_args and parsed_args.leak_routes:"},{"line_number":307,"context_line":"        attrs[\u0027leak_routes\u0027] \u003d True"},{"line_number":308,"context_line":"    elif \u0027no_leak_routes\u0027 in parsed_args and parsed_args.no_leak_routes:"},{"line_number":309,"context_line":"        attrs[\u0027leak_routes\u0027] \u003d False"},{"line_number":310,"context_line":"    return attrs"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f0ef92d_b45c5cad","line":309,"range":{"start_line":305,"start_character":54,"end_line":309,"end_character":36},"in_reply_to":"164ce901_10f84c3c","updated":"2026-08-06 19:43:39.000000000","message":"Done","commit_id":"e4286537d34358288a5d98da60470569688b82b2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8679032bd9b8bf23ce3b3e940e9773a9761dfd32","unresolved":true,"context_lines":[{"line_number":734,"context_line":"            metavar\u003d\u0027\u003cdescription\u003e\u0027,"},{"line_number":735,"context_line":"            help\u003d_(\"Set subnet description\"),"},{"line_number":736,"context_line":"        )"},{"line_number":737,"context_line":"        leak_routes_grp \u003d parser.add_mutually_exclusive_group()"},{"line_number":738,"context_line":"        leak_routes_grp.add_argument("},{"line_number":739,"context_line":"            \u0027--leak-routes\u0027,"},{"line_number":740,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":741,"context_line":"            default\u003dNone,"},{"line_number":742,"context_line":"            help\u003d_("},{"line_number":743,"context_line":"                \"Leak subnet routes to the underlay BGP fabric \""},{"line_number":744,"context_line":"                \"(ovn-bgp extension required)\""},{"line_number":745,"context_line":"            ),"},{"line_number":746,"context_line":"        )"},{"line_number":747,"context_line":"        leak_routes_grp.add_argument("},{"line_number":748,"context_line":"            \u0027--no-leak-routes\u0027,"},{"line_number":749,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":750,"context_line":"            help\u003d_("},{"line_number":751,"context_line":"                \"Do not leak subnet routes to the underlay \""},{"line_number":752,"context_line":"                \"BGP fabric (ovn-bgp extension required)\""},{"line_number":753,"context_line":"            ),"}],"source_content_type":"text/x-python","patch_set":2,"id":"6d686007_ad43cefe","line":750,"range":{"start_line":737,"start_character":63,"end_line":750,"end_character":19},"updated":"2026-08-05 09:32:30.000000000","message":"Let\u0027s use a common dest per above\n\n```suggestion\n        leak_routes_grp \u003d parser.add_mutually_exclusive_group()\n        leak_routes_grp.add_argument(\n            \u0027--leak-routes\u0027,\n            dest\u003d\u0027leak_routes\u0027,\n            action\u003d\u0027store_true\u0027,\n            default\u003dNone,\n            help\u003d_(\n                \"Leak subnet routes to the underlay BGP fabric \"\n                \"(ovn-bgp extension required)\"\n            ),\n        )\n        leak_routes_grp.add_argument(\n            \u0027--no-leak-routes\u0027,\n            dest\u003d\u0027leak_routes\u0027,\n            action\u003d\u0027store_false\u0027,\n            help\u003d_(\n```","commit_id":"e4286537d34358288a5d98da60470569688b82b2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"653b8dc037a821e73af1388355881e417cf2790c","unresolved":false,"context_lines":[{"line_number":734,"context_line":"            metavar\u003d\u0027\u003cdescription\u003e\u0027,"},{"line_number":735,"context_line":"            help\u003d_(\"Set subnet description\"),"},{"line_number":736,"context_line":"        )"},{"line_number":737,"context_line":"        leak_routes_grp \u003d parser.add_mutually_exclusive_group()"},{"line_number":738,"context_line":"        leak_routes_grp.add_argument("},{"line_number":739,"context_line":"            \u0027--leak-routes\u0027,"},{"line_number":740,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":741,"context_line":"            default\u003dNone,"},{"line_number":742,"context_line":"            help\u003d_("},{"line_number":743,"context_line":"                \"Leak subnet routes to the underlay BGP fabric \""},{"line_number":744,"context_line":"                \"(ovn-bgp extension required)\""},{"line_number":745,"context_line":"            ),"},{"line_number":746,"context_line":"        )"},{"line_number":747,"context_line":"        leak_routes_grp.add_argument("},{"line_number":748,"context_line":"            \u0027--no-leak-routes\u0027,"},{"line_number":749,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":750,"context_line":"            help\u003d_("},{"line_number":751,"context_line":"                \"Do not leak subnet routes to the underlay \""},{"line_number":752,"context_line":"                \"BGP fabric (ovn-bgp extension required)\""},{"line_number":753,"context_line":"            ),"}],"source_content_type":"text/x-python","patch_set":2,"id":"6c199860_69430d6c","line":750,"range":{"start_line":737,"start_character":63,"end_line":750,"end_character":19},"in_reply_to":"6d686007_ad43cefe","updated":"2026-08-06 19:43:39.000000000","message":"Done","commit_id":"e4286537d34358288a5d98da60470569688b82b2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8679032bd9b8bf23ce3b3e940e9773a9761dfd32","unresolved":true,"context_lines":[{"line_number":749,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":750,"context_line":"            help\u003d_("},{"line_number":751,"context_line":"                \"Do not leak subnet routes to the underlay \""},{"line_number":752,"context_line":"                \"BGP fabric (ovn-bgp extension required)\""},{"line_number":753,"context_line":"            ),"},{"line_number":754,"context_line":"        )"},{"line_number":755,"context_line":"        _tag.add_tag_option_to_parser_for_set(parser, _(\u0027subnet\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9c099c05_d418a376","line":752,"updated":"2026-08-05 09:32:30.000000000","message":"I\u0027d swear we did extension checks in some parts of the code base. If so, do we want to do those here?","commit_id":"e4286537d34358288a5d98da60470569688b82b2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a048b80d4f079699cb2d50f0fbede75ecb8ee55","unresolved":false,"context_lines":[{"line_number":749,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":750,"context_line":"            help\u003d_("},{"line_number":751,"context_line":"                \"Do not leak subnet routes to the underlay \""},{"line_number":752,"context_line":"                \"BGP fabric (ovn-bgp extension required)\""},{"line_number":753,"context_line":"            ),"},{"line_number":754,"context_line":"        )"},{"line_number":755,"context_line":"        _tag.add_tag_option_to_parser_for_set(parser, _(\u0027subnet\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"d9e00989_fdfaf669","line":752,"in_reply_to":"025b9f00_e953e89d","updated":"2026-08-10 10:38:22.000000000","message":"Yeah, that looks good to me","commit_id":"e4286537d34358288a5d98da60470569688b82b2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"653b8dc037a821e73af1388355881e417cf2790c","unresolved":true,"context_lines":[{"line_number":749,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":750,"context_line":"            help\u003d_("},{"line_number":751,"context_line":"                \"Do not leak subnet routes to the underlay \""},{"line_number":752,"context_line":"                \"BGP fabric (ovn-bgp extension required)\""},{"line_number":753,"context_line":"            ),"},{"line_number":754,"context_line":"        )"},{"line_number":755,"context_line":"        _tag.add_tag_option_to_parser_for_set(parser, _(\u0027subnet\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"025b9f00_e953e89d","line":752,"in_reply_to":"9c099c05_d418a376","updated":"2026-08-06 19:43:39.000000000","message":"I\u0027m not sure what you meant - the only piece that validates some extensions was this: https://review.opendev.org/c/openstack/python-openstackclient/+/998212/3/openstackclient/network/v2/subnet.py#786\n\nplease let me know if I\u0027m completely off :)","commit_id":"e4286537d34358288a5d98da60470569688b82b2"}]}
