@@ -730,6 +730,26 @@ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
730730 metavar = '<description>' ,
731731 help = _ ("Set subnet description" ),
732732 )
733+ leak_routes_grp = parser .add_mutually_exclusive_group ()
734+ leak_routes_grp .add_argument (
735+ '--leak-routes' ,
736+ action = 'store_true' ,
737+ dest = 'leak_routes' ,
738+ default = None ,
739+ help = _ (
740+ "Leak subnet routes to the underlay BGP fabric "
741+ "(ovn-bgp extension required)"
742+ ),
743+ )
744+ leak_routes_grp .add_argument (
745+ '--no-leak-routes' ,
746+ action = 'store_false' ,
747+ dest = 'leak_routes' ,
748+ help = _ (
749+ "Do not leak subnet routes to the underlay "
750+ "BGP fabric (ovn-bgp extension required)"
751+ ),
752+ )
733753 _tag .add_tag_option_to_parser_for_set (parser , _ ('subnet' ))
734754 _get_common_parse_arguments (parser , is_create = False )
735755 return parser
@@ -757,11 +777,14 @@ def take_action(self, parsed_args: argparse.Namespace) -> None:
757777 attrs ['allocation_pools' ] = []
758778 if 'service_types' in attrs :
759779 attrs ['service_types' ] += obj .service_types
780+ if parsed_args .leak_routes is not None :
781+ attrs ['leak_routes' ] = parsed_args .leak_routes
760782 attrs .update (
761783 self ._parse_extra_properties (parsed_args .extra_properties )
762784 )
763785 if attrs :
764- client .update_subnet (obj , ** attrs )
786+ with common .check_missing_extension_if_error (client , attrs ):
787+ client .update_subnet (obj , ** attrs )
765788 # tags is a subresource and it needs to be updated separately.
766789 _tag .update_tags_for_set (client , obj , parsed_args )
767790 return
0 commit comments