finish filterNodes beta

This commit is contained in:
iwilltry42 2019-11-07 11:29:15 +01:00
parent 82c29868a1
commit b78a8cf993

View File

@ -96,7 +96,8 @@ func FilterNodes(nodes []*k3d.Node, filterString string) ([]*k3d.Node, error) {
} }
} }
filteredNodes := make([]k3d.Node, 1) filteredNodes := make([]*k3d.Node, 1)
set := make(map[*k3d.Node]struct{})
// range over all instances of group[subset] specs // range over all instances of group[subset] specs
for _, filter := range filters { for _, filter := range filters {
@ -131,8 +132,7 @@ func FilterNodes(nodes []*k3d.Node, filterString string) ([]*k3d.Node, error) {
groupNodes = workerNodes groupNodes = workerNodes
} }
subset := []int{} /* subset defined by list */
if submatches["subsetList"] != "" { if submatches["subsetList"] != "" {
for _, index := range strings.Split(submatches["subsetList"], ",") { for _, index := range strings.Split(submatches["subsetList"], ",") {
if index != "" { if index != "" {
@ -140,11 +140,13 @@ func FilterNodes(nodes []*k3d.Node, filterString string) ([]*k3d.Node, error) {
if err != nil { if err != nil {
return nil, fmt.Errorf("Failed to convert subset number to integer in '%s'", filter) return nil, fmt.Errorf("Failed to convert subset number to integer in '%s'", filter)
} }
filteredNodes = append(filteredNodes, *groupNodes[num]) if _, exists := set[groupNodes[num]]; !exists {
subset = append(subset, num) filteredNodes = append(filteredNodes, groupNodes[num])
}
} }
} }
/* subset defined by range */
} else if submatches["subsetRange"] != "" { } else if submatches["subsetRange"] != "" {
/* /*
@ -182,21 +184,26 @@ func FilterNodes(nodes []*k3d.Node, filterString string) ([]*k3d.Node, error) {
} }
for i := start; i <= end; i++ { for i := start; i <= end; i++ {
subset = append(subset, i) if _, exists := set[groupNodes[i]]; !exists {
filteredNodes = append(filteredNodes, groupNodes[i])
}
} }
/* subset defined by wildcard */
} else if submatches["subsetWildcard"] == "*" { } else if submatches["subsetWildcard"] == "*" {
/* /*
* '*' = all nodes * '*' = all nodes
*/ */
return groupNodes, nil return groupNodes, nil
/* invalid/unknown subset */
} else { } else {
return nil, fmt.Errorf("Failed to parse node specifiers: unknown subset in '%s'", filter) return nil, fmt.Errorf("Failed to parse node specifiers: unknown subset in '%s'", filter)
} }
} }
log.Debugf("ROLESMAP: %+v", rolesMap) log.Debugf("Filtered nodes: %+v", filteredNodes)
return rolesMap, nil return filteredNodes, nil
} }