mirror of
https://github.com/speatzle/nfsense.git
synced 2025-05-11 19:08:20 +00:00
35 lines
1 KiB
Go
35 lines
1 KiB
Go
package util
|
|
|
|
import "nfsense.net/nfsense/internal/definitions"
|
|
|
|
// ResolveBaseServices Resolves all groups to their base Services
|
|
func ResolveBaseServices(allServices map[string]definitions.Service, serviceNames []string) []definitions.Service {
|
|
baseServices := []definitions.Service{}
|
|
|
|
for _, serviceName := range serviceNames {
|
|
service := allServices[serviceName]
|
|
|
|
if service.Type == definitions.ServiceGroup {
|
|
baseServices = append(baseServices, resolveServiceChildren(allServices, service)...)
|
|
} else {
|
|
baseServices = append(baseServices, service)
|
|
}
|
|
|
|
}
|
|
|
|
return baseServices
|
|
}
|
|
|
|
func resolveServiceChildren(allServices map[string]definitions.Service, s definitions.Service) []definitions.Service {
|
|
serviceList := []definitions.Service{}
|
|
for _, serviceName := range *s.Children {
|
|
service := allServices[serviceName]
|
|
|
|
if service.Type == definitions.ServiceGroup {
|
|
serviceList = append(serviceList, resolveServiceChildren(allServices, service)...)
|
|
} else {
|
|
serviceList = append(serviceList, service)
|
|
}
|
|
}
|
|
return serviceList
|
|
}
|