@@ -908,6 +908,19 @@ func getContainerName(container *parser.UnitFile) string {
908
908
return containerName
909
909
}
910
910
911
+ // Get the unresolved resouce name that may contain '%'.
912
+ func getResourceName (unit * parser.UnitFile , group , key string ) string {
913
+ resourceName , ok := unit .Lookup (group , key )
914
+ if ! ok || len (resourceName ) == 0 {
915
+ resourceName = removeExtension (unit .Filename , "systemd-" , "" )
916
+ // By default, We want to name the resource by the service name.
917
+ if strings .Contains (unit .Filename , "@" ) {
918
+ resourceName = resourceName [:len (resourceName )- 1 ] + "-%i"
919
+ }
920
+ }
921
+ return resourceName
922
+ }
923
+
911
924
// Get the resolved container name that contains no '%'.
912
925
// Returns an empty string if not resolvable.
913
926
func GetContainerResourceName (container * parser.UnitFile ) string {
@@ -954,10 +967,7 @@ func ConvertNetwork(network *parser.UnitFile, name string, unitsInfoMap map[stri
954
967
}
955
968
956
969
// Derive network name from unit name (with added prefix), or use user-provided name.
957
- networkName , ok := network .Lookup (NetworkGroup , KeyNetworkName )
958
- if ! ok || len (networkName ) == 0 {
959
- networkName = removeExtension (name , "systemd-" , "" )
960
- }
970
+ networkName := getResourceName (network , NetworkGroup , KeyNetworkName )
961
971
962
972
if network .LookupBooleanWithDefault (NetworkGroup , KeyNetworkDeleteOnStop , false ) {
963
973
serviceStopPostCmd := createBasePodmanCommand (network , NetworkGroup )
@@ -1046,10 +1056,7 @@ func ConvertVolume(volume *parser.UnitFile, name string, unitsInfoMap map[string
1046
1056
}
1047
1057
1048
1058
// Derive volume name from unit name (with added prefix), or use user-provided name.
1049
- volumeName , ok := volume .Lookup (VolumeGroup , KeyVolumeName )
1050
- if ! ok || len (volumeName ) == 0 {
1051
- volumeName = removeExtension (name , "systemd-" , "" )
1052
- }
1059
+ volumeName := getResourceName (volume , VolumeGroup , KeyVolumeName )
1053
1060
1054
1061
podman := createBasePodmanCommand (volume , VolumeGroup )
1055
1062
@@ -1503,7 +1510,12 @@ func getServiceName(quadletUnitFile *parser.UnitFile, groupName string, defaultE
1503
1510
if serviceName , ok := quadletUnitFile .Lookup (groupName , KeyServiceName ); ok {
1504
1511
return serviceName
1505
1512
}
1506
- return removeExtension (quadletUnitFile .Filename , "" , defaultExtraSuffix )
1513
+ baseServiceName := removeExtension (quadletUnitFile .Filename , "" , "" )
1514
+ if baseServiceName [len (baseServiceName )- 1 ] == '@' {
1515
+ baseServiceName = baseServiceName [:len (baseServiceName )- 1 ]
1516
+ defaultExtraSuffix = defaultExtraSuffix + "@"
1517
+ }
1518
+ return baseServiceName + defaultExtraSuffix
1507
1519
}
1508
1520
1509
1521
func GetPodResourceName (podUnit * parser.UnitFile ) string {
0 commit comments