@@ -802,6 +802,40 @@ def _importFile(self, path: str, hostpath: str) -> str:
802
802
copyfile (hostpath , staged_path )
803
803
return 'COPY {} {}\n ' .format (staged_path , path )
804
804
805
+
806
+ def computeNodeName (self , node ):
807
+ """
808
+ @brief given a node, compute its final container name, as it will be known in the docker-compose file
809
+ """
810
+ name = self .__naming_scheme .format (
811
+ asn = node .getAsn (),
812
+ role = self ._nodeRoleToString (node .getRole ()),
813
+ name = node .getName (),
814
+ displayName = node .getDisplayName () if node .getDisplayName () != None else node .getName (),
815
+ primaryIp = node .getInterfaces ()[0 ].getAddress ()
816
+ )
817
+
818
+ return sub (r'[^a-zA-Z0-9_.-]' , '_' , name )
819
+
820
+ def realNodeName (self , node ):
821
+ """
822
+ @brief computes the sub directory names inside the output folder
823
+
824
+ why is it distinct from computeNodeName() ?!
825
+ """
826
+ (scope , type , _ ) = node .getRegistryInfo ()
827
+ prefix = self ._contextToPrefix (scope , type )
828
+ return '{}{}' .format (prefix , node .getName ())
829
+
830
+ def realNetName (self ,net ):
831
+ """
832
+ @brief computes name of a network as it will be known in the docker-compose file
833
+ """
834
+ (netscope , _ , _ ) = net .getRegistryInfo ()
835
+ net_prefix = self ._contextToPrefix (netscope , 'net' )
836
+ if net .getType () == NetworkType .Bridge : net_prefix = ''
837
+ return '{}{}' .format (net_prefix , net .getName ())
838
+
805
839
def _compileNode (self , node : Node ) -> str :
806
840
"""!
807
841
@brief Compile a single node. Will create folder for node and the
@@ -811,18 +845,14 @@ def _compileNode(self, node: Node) -> str:
811
845
812
846
@returns docker-compose service string.
813
847
"""
814
- (scope , type , _ ) = node .getRegistryInfo ()
815
- prefix = self ._contextToPrefix (scope , type )
816
- real_nodename = '{}{}' .format (prefix , node .getName ())
848
+ real_nodename = self .realNodeName (node )
817
849
node_nets = ''
818
850
dummy_addr_map = ''
819
851
820
852
for iface in node .getInterfaces ():
821
853
net = iface .getNet ()
822
- (netscope , _ , _ ) = net .getRegistryInfo ()
823
- net_prefix = self ._contextToPrefix (netscope , 'net' )
824
- if net .getType () == NetworkType .Bridge : net_prefix = ''
825
- real_netname = '{}{}' .format (net_prefix , net .getName ())
854
+
855
+ real_netname = self .realNetName (net )
826
856
address = iface .getAddress ()
827
857
828
858
if self .__self_managed_network and net .getType () != NetworkType .Bridge :
@@ -891,6 +921,8 @@ def _compileNode(self, node: Node) -> str:
891
921
volumeList = lst
892
922
)
893
923
924
+ name = self .computeNodeName (node )
925
+
894
926
dockerfile = DockerCompilerFileTemplates ['dockerfile' ]
895
927
mkdir (real_nodename )
896
928
chdir (real_nodename )
@@ -978,18 +1010,15 @@ def _compileNet(self, net: Network) -> str:
978
1010
979
1011
@returns docker-compose network string.
980
1012
"""
981
- (scope , _ , _ ) = net .getRegistryInfo ()
982
1013
if self .__self_managed_network and net .getType () != NetworkType .Bridge :
983
1014
pfx = next (self .__dummy_network_pool )
984
1015
net .setAttribute ('dummy_prefix' , pfx )
985
1016
net .setAttribute ('dummy_prefix_index' , 2 )
986
1017
self ._log ('self-managed network: using dummy prefix {}' .format (pfx ))
987
1018
988
- net_prefix = self ._contextToPrefix (scope , 'net' )
989
- if net .getType () == NetworkType .Bridge : net_prefix = ''
990
-
1019
+
991
1020
return DockerCompilerFileTemplates ['compose_network' ].format (
992
- netId = '{}{}' . format ( net_prefix , net . getName () ),
1021
+ netId = self . realNetName ( net ),
993
1022
prefix = net .getAttribute ('dummy_prefix' ) if self .__self_managed_network and net .getType () != NetworkType .Bridge else net .getPrefix (),
994
1023
mtu = net .getMtu (),
995
1024
labelList = self ._getNetMeta (net )
0 commit comments