@@ -680,6 +680,48 @@ def norm_ports(ports_in):
680680 return ports_out
681681
682682
683+ def get_network_create_args (net_desc , proj_name , net_name ):
684+ args = [
685+ "create" ,
686+ "--label" ,
687+ f"io.podman.compose.project={ proj_name } " ,
688+ "--label" ,
689+ f"com.docker.compose.project={ proj_name } " ,
690+ ]
691+ # TODO: add more options here, like dns, ipv6, etc.
692+ labels = net_desc .get ("labels" , None ) or []
693+ for item in norm_as_list (labels ):
694+ args .extend (["--label" , item ])
695+ if net_desc .get ("internal" , None ):
696+ args .append ("--internal" )
697+ driver = net_desc .get ("driver" , None )
698+ if driver :
699+ args .extend (("--driver" , driver ))
700+ driver_opts = net_desc .get ("driver_opts" , None ) or {}
701+ for key , value in driver_opts .items ():
702+ args .extend (("--opt" , f"{ key } ={ value } " ))
703+ ipam = net_desc .get ("ipam" , None ) or {}
704+ ipam_driver = ipam .get ("driver" , None )
705+ if ipam_driver :
706+ args .extend (("--ipam-driver" , ipam_driver ))
707+ ipam_config_ls = ipam .get ("config" , None ) or []
708+ if is_dict (ipam_config_ls ):
709+ ipam_config_ls = [ipam_config_ls ]
710+ for ipam_config in ipam_config_ls :
711+ subnet = ipam_config .get ("subnet" , None )
712+ ip_range = ipam_config .get ("ip_range" , None )
713+ gateway = ipam_config .get ("gateway" , None )
714+ if subnet :
715+ args .extend (("--subnet" , subnet ))
716+ if ip_range :
717+ args .extend (("--ip-range" , ip_range ))
718+ if gateway :
719+ args .extend (("--gateway" , gateway ))
720+ args .append (net_name )
721+
722+ return args
723+
724+
683725async def assert_cnt_nets (compose , cnt ):
684726 """
685727 create missing networks
@@ -705,43 +747,7 @@ async def assert_cnt_nets(compose, cnt):
705747 except subprocess .CalledProcessError as e :
706748 if is_ext :
707749 raise RuntimeError (f"External network [{ net_name } ] does not exists" ) from e
708- args = [
709- "create" ,
710- "--label" ,
711- f"io.podman.compose.project={ proj_name } " ,
712- "--label" ,
713- f"com.docker.compose.project={ proj_name } " ,
714- ]
715- # TODO: add more options here, like dns, ipv6, etc.
716- labels = net_desc .get ("labels" , None ) or []
717- for item in norm_as_list (labels ):
718- args .extend (["--label" , item ])
719- if net_desc .get ("internal" , None ):
720- args .append ("--internal" )
721- driver = net_desc .get ("driver" , None )
722- if driver :
723- args .extend (("--driver" , driver ))
724- driver_opts = net_desc .get ("driver_opts" , None ) or {}
725- for key , value in driver_opts .items ():
726- args .extend (("--opt" , f"{ key } ={ value } " ))
727- ipam = net_desc .get ("ipam" , None ) or {}
728- ipam_driver = ipam .get ("driver" , None )
729- if ipam_driver :
730- args .extend (("--ipam-driver" , ipam_driver ))
731- ipam_config_ls = ipam .get ("config" , None ) or []
732- if is_dict (ipam_config_ls ):
733- ipam_config_ls = [ipam_config_ls ]
734- for ipam_config in ipam_config_ls :
735- subnet = ipam_config .get ("subnet" , None )
736- ip_range = ipam_config .get ("ip_range" , None )
737- gateway = ipam_config .get ("gateway" , None )
738- if subnet :
739- args .extend (("--subnet" , subnet ))
740- if ip_range :
741- args .extend (("--ip-range" , ip_range ))
742- if gateway :
743- args .extend (("--gateway" , gateway ))
744- args .append (net_name )
750+ args = get_network_create_args (net_desc , proj_name , net_name )
745751 await compose .podman .output ([], "network" , args )
746752 await compose .podman .output ([], "network" , ["exists" , net_name ])
747753
0 commit comments