From 972259b0a318b7c7094de10e895b6f59c9d71953 Mon Sep 17 00:00:00 2001 From: Marco Vito Moscaritolo Date: Wed, 15 Aug 2018 22:59:54 +0200 Subject: [PATCH] keypairs failure now return error instead of panic, removed alsu utils that are used in a single specific case --- pkg/clustermanager/cluster.go | 15 +++++++++++---- pkg/clustermanager/util.go | 24 ------------------------ pkg/clustermanager/wireguard.go | 12 ++++++++---- 3 files changed, 19 insertions(+), 32 deletions(-) diff --git a/pkg/clustermanager/cluster.go b/pkg/clustermanager/cluster.go index ae6358a9..d511d34a 100644 --- a/pkg/clustermanager/cluster.go +++ b/pkg/clustermanager/cluster.go @@ -101,7 +101,10 @@ func (manager *Manager) ProvisionNodes(nodes []Node) error { func (manager *Manager) SetupEncryptedNetwork() error { nodes := manager.nodes // render a public/private key pair - keyPairs := manager.GenerateKeyPairs(nodes[0], len(nodes)) + keyPairs, err := manager.GenerateKeyPairs(nodes[0], len(nodes)) + if err != nil { + return fmt.Errorf("unable to setup encrypted network: %v", err) + } for i, keyPair := range keyPairs { manager.nodes[i].WireGuardKeyPair = keyPair @@ -134,7 +137,7 @@ func (manager *Manager) SetupEncryptedNetwork() error { }(node) } - err := waitOrError(trueChan, errChan, &numProc) + err = waitOrError(trueChan, errChan, &numProc) if err != nil { return err } @@ -435,8 +438,12 @@ func (manager *Manager) DeployLoadBalancer(nodes []Node) error { errChan := make(chan error) trueChan := make(chan bool) numProcs := 0 - masterNodes := manager.clusterProvider.GetMasterNodes() - masterIps := strings.Join(Nodes2IPs(masterNodes), " ") + masterNodesIP := []string{} + for _, node := range manager.clusterProvider.GetMasterNodes() { + masterNodesIP = append(masterNodesIP, node.IPAddress) + } + + masterIps := strings.Join(masterNodesIP, " ") for _, node := range nodes { if !node.IsMaster && node.IsEtcd { continue diff --git a/pkg/clustermanager/util.go b/pkg/clustermanager/util.go index 39bb75f1..7870ee92 100644 --- a/pkg/clustermanager/util.go +++ b/pkg/clustermanager/util.go @@ -1,7 +1,5 @@ package clustermanager -import "log" - func waitOrError(tc chan bool, ec chan error, numProcPtr *int) error { numProcs := *numProcPtr for numProcs > 0 { @@ -15,25 +13,3 @@ func waitOrError(tc chan bool, ec chan error, numProcPtr *int) error { return nil } - -//Node2IP get IP address for a node -func Node2IP(node Node) string { - return node.IPAddress -} - -//Nodes2IPs get the collection of IP addresses for a node -func Nodes2IPs(nodes []Node) []string { - ips := []string{} - for _, node := range nodes { - ips = append(ips, Node2IP(node)) - } - - return ips -} - -//FatalOnError is an helper function used to transfor error to fatal -func FatalOnError(err error) { - if err != nil { - log.Fatal(err) - } -} diff --git a/pkg/clustermanager/wireguard.go b/pkg/clustermanager/wireguard.go index b00d14f3..c16459ba 100644 --- a/pkg/clustermanager/wireguard.go +++ b/pkg/clustermanager/wireguard.go @@ -13,19 +13,23 @@ type WgKeyPair struct { } //GenerateKeyPairs generate key pairs -func (manager *Manager) GenerateKeyPairs(node Node, count int) []WgKeyPair { +func (manager *Manager) GenerateKeyPairs(node Node, count int) ([]WgKeyPair, error) { genKeyPairs := fmt.Sprintf(`echo "[" ;for i in {1..%d}; do pk=$(wg genkey); pubk=$(echo $pk | wg pubkey);echo "{\"private\":\"$pk\",\"public\":\"$pubk\"},"; done; echo "]";`, count) // gives an invalid JSON back o, err := manager.nodeCommunicator.RunCmd(node, genKeyPairs) - FatalOnError(err) + if err != nil { + return []WgKeyPair{}, fmt.Errorf("unable to generate a key pairs: %v", err) + } o = o[0:len(o)-4] + "]" // now it's a valid json var keyPairs []WgKeyPair err = json.Unmarshal([]byte(o), &keyPairs) - FatalOnError(err) + if err != nil { + return []WgKeyPair{}, fmt.Errorf("unable to json decode key pairs: %v", err) + } - return keyPairs + return keyPairs, nil } //GenerateWireguardConf generate wireguard configuration file