transformsimple: move transformports to own function
This commit is contained in:
parent
bb237d3389
commit
2162504ee1
@ -158,10 +158,10 @@ func TransformSimpleToClusterConfig(ctx context.Context, runtime runtimes.Runtim
|
||||
/****************************
|
||||
* Extra Node Configuration *
|
||||
****************************/
|
||||
|
||||
// -> VOLUMES
|
||||
nodeCount := len(newCluster.Nodes)
|
||||
nodeList := newCluster.Nodes
|
||||
|
||||
// -> VOLUMES
|
||||
for _, volumeWithNodeFilters := range simpleConfig.Volumes {
|
||||
nodes, err := util.FilterNodes(nodeList, volumeWithNodeFilters.NodeFilters)
|
||||
if err != nil {
|
||||
@ -174,74 +174,8 @@ func TransformSimpleToClusterConfig(ctx context.Context, runtime runtimes.Runtim
|
||||
}
|
||||
|
||||
// -> PORTS
|
||||
for _, portWithNodeFilters := range simpleConfig.Ports {
|
||||
log.Tracef("inspecting port mapping for %s with nodefilters %s", portWithNodeFilters.Port, portWithNodeFilters.NodeFilters)
|
||||
if len(portWithNodeFilters.NodeFilters) == 0 && nodeCount > 1 {
|
||||
log.Infof("portmapping '%s' lacks a nodefilter, but there's more than one node: defaulting to %s", portWithNodeFilters.Port, DefaultTargetsNodefiltersPortMappings)
|
||||
portWithNodeFilters.NodeFilters = DefaultTargetsNodefiltersPortMappings
|
||||
}
|
||||
|
||||
for _, f := range portWithNodeFilters.NodeFilters {
|
||||
if strings.HasPrefix(f, "loadbalancer") {
|
||||
log.Infof("portmapping '%s' targets the loadbalancer: defaulting to %s", portWithNodeFilters.Port, DefaultTargetsNodefiltersPortMappings)
|
||||
portWithNodeFilters.NodeFilters = DefaultTargetsNodefiltersPortMappings
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
filteredNodes, err := util.FilterNodesWithSuffix(nodeList, portWithNodeFilters.NodeFilters)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
nn := ""
|
||||
for _, n := range filteredNodes["proxy"] {
|
||||
nn = strings.Join([]string{nn, n.Name}, ",")
|
||||
}
|
||||
log.Debugf("Filtered nodes: %#v", nn)
|
||||
|
||||
for suffix, nodes := range filteredNodes {
|
||||
portmappings, err := nat.ParsePortSpec(portWithNodeFilters.Port)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error parsing port spec '%s': %+v", portWithNodeFilters.Port, err)
|
||||
}
|
||||
|
||||
if suffix == "proxy" || suffix == util.NodeFilterSuffixNone { // proxy is the default suffix for port mappings
|
||||
if newCluster.ServerLoadBalancer == nil {
|
||||
return nil, fmt.Errorf("port-mapping of type 'proxy' specified, but loadbalancer is disabled")
|
||||
}
|
||||
if err := addPortMappings(newCluster.ServerLoadBalancer.Node, portmappings); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, pm := range portmappings {
|
||||
if err := loadbalancerAddPortConfigs(newCluster.ServerLoadBalancer, pm, nodes); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
} else if suffix == "direct" {
|
||||
if len(nodes) > 1 {
|
||||
return nil, fmt.Errorf("error: cannot apply a direct port-mapping (%s) to more than one node", portmappings)
|
||||
}
|
||||
for _, node := range nodes {
|
||||
if err := addPortMappings(node, portmappings); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
} else if suffix != util.NodeFilterMapKeyAll {
|
||||
return nil, fmt.Errorf("error adding port mappings: unknown suffix %s", suffix)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// print generated loadbalancer config
|
||||
if log.GetLevel() >= log.DebugLevel {
|
||||
yamlized, err := yaml.Marshal(newCluster.ServerLoadBalancer.Config)
|
||||
if err != nil {
|
||||
log.Errorf("error printing loadbalancer config: %v", err)
|
||||
} else {
|
||||
log.Debugf("generated loadbalancer config:\n%s", string(yamlized))
|
||||
}
|
||||
if err := TransformPorts(ctx, runtime, &newCluster, simpleConfig.Ports); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// -> K3S NODE LABELS
|
||||
@ -456,3 +390,79 @@ nodenameLoop:
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func TransformPorts(ctx context.Context, runtime runtimes.Runtime, cluster *k3d.Cluster, portsWithNodeFilters []conf.PortWithNodeFilters) error {
|
||||
nodeCount := len(cluster.Nodes)
|
||||
nodeList := cluster.Nodes
|
||||
|
||||
for _, portWithNodeFilters := range portsWithNodeFilters {
|
||||
log.Tracef("inspecting port mapping for %s with nodefilters %s", portWithNodeFilters.Port, portWithNodeFilters.NodeFilters)
|
||||
if len(portWithNodeFilters.NodeFilters) == 0 && nodeCount > 1 {
|
||||
log.Infof("portmapping '%s' lacks a nodefilter, but there's more than one node: defaulting to %s", portWithNodeFilters.Port, DefaultTargetsNodefiltersPortMappings)
|
||||
portWithNodeFilters.NodeFilters = DefaultTargetsNodefiltersPortMappings
|
||||
}
|
||||
|
||||
for _, f := range portWithNodeFilters.NodeFilters {
|
||||
if strings.HasPrefix(f, "loadbalancer") {
|
||||
log.Infof("portmapping '%s' targets the loadbalancer: defaulting to %s", portWithNodeFilters.Port, DefaultTargetsNodefiltersPortMappings)
|
||||
portWithNodeFilters.NodeFilters = DefaultTargetsNodefiltersPortMappings
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
filteredNodes, err := util.FilterNodesWithSuffix(nodeList, portWithNodeFilters.NodeFilters)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
nn := ""
|
||||
for _, n := range filteredNodes["proxy"] {
|
||||
nn = strings.Join([]string{nn, n.Name}, ",")
|
||||
}
|
||||
log.Debugf("Filtered nodes: %#v", nn)
|
||||
|
||||
for suffix, nodes := range filteredNodes {
|
||||
portmappings, err := nat.ParsePortSpec(portWithNodeFilters.Port)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error parsing port spec '%s': %+v", portWithNodeFilters.Port, err)
|
||||
}
|
||||
|
||||
if suffix == "proxy" || suffix == util.NodeFilterSuffixNone { // proxy is the default suffix for port mappings
|
||||
if cluster.ServerLoadBalancer == nil {
|
||||
return fmt.Errorf("port-mapping of type 'proxy' specified, but loadbalancer is disabled")
|
||||
}
|
||||
if err := addPortMappings(cluster.ServerLoadBalancer.Node, portmappings); err != nil {
|
||||
return err
|
||||
}
|
||||
for _, pm := range portmappings {
|
||||
if err := loadbalancerAddPortConfigs(cluster.ServerLoadBalancer, pm, nodes); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else if suffix == "direct" {
|
||||
if len(nodes) > 1 {
|
||||
return fmt.Errorf("error: cannot apply a direct port-mapping (%s) to more than one node", portmappings)
|
||||
}
|
||||
for _, node := range nodes {
|
||||
if err := addPortMappings(node, portmappings); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else if suffix != util.NodeFilterMapKeyAll {
|
||||
return fmt.Errorf("error adding port mappings: unknown suffix %s", suffix)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// print generated loadbalancer config
|
||||
if log.GetLevel() >= log.DebugLevel {
|
||||
yamlized, err := yaml.Marshal(cluster.ServerLoadBalancer.Config)
|
||||
if err != nil {
|
||||
log.Errorf("error printing loadbalancer config: %v", err)
|
||||
} else {
|
||||
log.Debugf("generated loadbalancer config:\n%s", string(yamlized))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user