From b70a2688b5084b1db82498d1d47492c8a0ffe1f5 Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Thu, 2 Mar 2023 00:08:07 +0100 Subject: [PATCH] add service utilities --- pkg/util/service.go | 55 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 pkg/util/service.go diff --git a/pkg/util/service.go b/pkg/util/service.go new file mode 100644 index 0000000..8b5df46 --- /dev/null +++ b/pkg/util/service.go @@ -0,0 +1,55 @@ +package util + +import "github.con/speatzle/nfsense/pkg/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, resolveChildren(allServices, service)...) + } else { + baseServices = append(baseServices, service) + } + + } + + return baseServices +} + +func resolveChildren(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, resolveChildren(allServices, service)...) + } else { + serviceList = append(serviceList, service) + } + } + return serviceList +} + +func ConvertSliceToSetString(slice []string) string { + if len(slice) == 0 { + return "" + } else if len(slice) == 1 { + return slice[0] + } + + res := "{ " + + for i := range slice { + res += " " + slice[i] + if i < len(slice)-1 { + res += "," + } + } + + res += " }" + return res +}