package agent import "strings" // ContainerNameFor returns the expected container name for a service and // component. For single-component services where the component name equals // the service name, the container name is just the service name (e.g., // "mc-proxy" not "mc-proxy-mc-proxy"). func ContainerNameFor(service, component string) string { if service == component { return service } return service + "-" + component } // SplitContainerName splits a container name into service and component parts. // It checks known service names first to handle names like "mc-proxy" where a // naive split on "-" would produce the wrong result. If no known service // matches, it falls back to splitting on the first "-". func SplitContainerName(name string, knownServices map[string]bool) (service, component string) { if knownServices[name] { return name, name } for svc := range knownServices { prefix := svc + "-" if strings.HasPrefix(name, prefix) && len(name) > len(prefix) { return svc, name[len(prefix):] } } if i := strings.Index(name, "-"); i >= 0 { return name[:i], name[i+1:] } return name, name }