@@ -680,6 +680,51 @@ def norm_ports(ports_in):
680
680
return ports_out
681
681
682
682
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 net_desc .get ("enable_ipv6" , None ):
709
+ args .append ("--ipv6" )
710
+
711
+ if is_dict (ipam_config_ls ):
712
+ ipam_config_ls = [ipam_config_ls ]
713
+ for ipam_config in ipam_config_ls :
714
+ subnet = ipam_config .get ("subnet" , None )
715
+ ip_range = ipam_config .get ("ip_range" , None )
716
+ gateway = ipam_config .get ("gateway" , None )
717
+ if subnet :
718
+ args .extend (("--subnet" , subnet ))
719
+ if ip_range :
720
+ args .extend (("--ip-range" , ip_range ))
721
+ if gateway :
722
+ args .extend (("--gateway" , gateway ))
723
+ args .append (net_name )
724
+
725
+ return args
726
+
727
+
683
728
async def assert_cnt_nets (compose , cnt ):
684
729
"""
685
730
create missing networks
@@ -705,43 +750,7 @@ async def assert_cnt_nets(compose, cnt):
705
750
except subprocess .CalledProcessError as e :
706
751
if is_ext :
707
752
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 )
753
+ args = get_network_create_args (net_desc , proj_name , net_name )
745
754
await compose .podman .output ([], "network" , args )
746
755
await compose .podman .output ([], "network" , ["exists" , net_name ])
747
756
0 commit comments