return groups, nil
}
-func ResolveHostGroups(host string,
- groups map[string][]string,
+func ResolveHostGroups(host string, groups map[string][]string,
detectedGroups []string) ([]string, error) {
- const maxDepth = 100
+ const maxRecursionDepth = 100
detectedGroupsMap := make(map[string]bool)
for _, x := range detectedGroups {
// groups).
var lookup func(string, int) bool
lookup = func(group string, depth int) bool {
- if depth > maxDepth {
+ if depth > maxRecursionDepth {
cycle = &group
return false
}
// TransitivelyDetectedGroups returns all groups which depend on "detected"
// groups, either directly or by depending on groups which transitively depend
// on "detected" groups.
-func TransitivelyDetectedGroups(groups map[string][]string) []string {
+func TransitivelyDetectedGroups(groups map[string][]string) map[string]bool {
work := make(map[string][]string)
for k, v := range groups {
work[k] = v
break
}
}
-
- var res []string
- for x := range detected {
- res = append(res, x)
- }
- sort.Strings(res)
- return res
+ return detected
}