From dabec2f09152038a268cbbb5d3f24829c2aac0cc Mon Sep 17 00:00:00 2001 From: iwilltry42 Date: Wed, 27 May 2020 18:23:39 +0200 Subject: [PATCH] createCluster: fix loadblancer consideration - issue #248: nil pointer dereference because we're trying to access non-existent loadblancer node --- cmd/create/createCluster.go | 12 +++++++----- cmd/util/filter.go | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/cmd/create/createCluster.go b/cmd/create/createCluster.go index cf308c79..74f81a9d 100644 --- a/cmd/create/createCluster.go +++ b/cmd/create/createCluster.go @@ -374,15 +374,17 @@ func parseCreateClusterCmd(cmd *cobra.Command, args []string, createClusterOpts } // append ports - lbCount := 1 - if createClusterOpts.DisableLoadBalancer { - lbCount = 0 + nodeCount := masterCount + workerCount + nodeList := cluster.Nodes + if !createClusterOpts.DisableLoadBalancer { + nodeCount++ + nodeList = append(nodeList, cluster.MasterLoadBalancer) } for portmap, filters := range portFilterMap { - if len(filters) == 0 && (masterCount+workerCount+lbCount) > 1 { + if len(filters) == 0 && (nodeCount) > 1 { log.Fatalf("Malformed portmapping '%s' lacks a node filter, but there is more than one node (including the loadbalancer, if there is any).", portmap) } - nodes, err := cliutil.FilterNodes(append(cluster.Nodes, cluster.MasterLoadBalancer), filters) + nodes, err := cliutil.FilterNodes(nodeList, filters) if err != nil { log.Fatalln(err) } diff --git a/cmd/util/filter.go b/cmd/util/filter.go index e9571069..5f62091e 100644 --- a/cmd/util/filter.go +++ b/cmd/util/filter.go @@ -67,7 +67,7 @@ func SplitFiltersFromFlag(flag string) (string, []string, error) { func FilterNodes(nodes []*k3d.Node, filters []string) ([]*k3d.Node, error) { if len(filters) == 0 || len(filters[0]) == 0 { - log.Warnln("No filter specified") + log.Warnln("No node filter specified") return nodes, nil }