From cbfc45701dad0f31852157863344301abc5e55b8 Mon Sep 17 00:00:00 2001 From: Marco Vito Moscaritolo Date: Wed, 15 Aug 2018 22:33:46 +0200 Subject: [PATCH] centralize cloud provider creation informations --- cmd/cluster_add_external_worker.go | 9 ++++----- cmd/cluster_create.go | 14 +++++++------- pkg/hetzner/hetzner_provider.go | 23 ++++++++++------------- pkg/hetzner/util.go | 5 ++--- 4 files changed, 23 insertions(+), 28 deletions(-) diff --git a/cmd/cluster_add_external_worker.go b/cmd/cluster_add_external_worker.go index 762ae125..2075f128 100644 --- a/cmd/cluster_add_external_worker.go +++ b/cmd/cluster_add_external_worker.go @@ -17,12 +17,13 @@ package cmd import ( "errors" "fmt" + "log" + "strings" + "github.com/spf13/cobra" "github.com/xetys/hetzner-kube/pkg" "github.com/xetys/hetzner-kube/pkg/clustermanager" "github.com/xetys/hetzner-kube/pkg/hetzner" - "log" - "strings" ) // clusterAddWorkerCmd represents the clusterAddWorker command @@ -138,9 +139,7 @@ An external server must meet the following requirements: } externalNode.PrivateIPAddress = fmt.Sprintf("%s.%d", cidrPrefix, nextNode) coordinator := pkg.NewProgressCoordinator() - hetznerProvider := hetzner.NewHetznerProvider(AppConf.Context, AppConf.Client, AppConf.CurrentContext.Token) - hetznerProvider.InitCluster(cluster.Name, cluster.NodeCIDR) - hetznerProvider.SetNodes(cluster.Nodes) + hetznerProvider := hetzner.NewHetznerProvider(AppConf.Context, AppConf.Client, *cluster, AppConf.CurrentContext.Token) clusterManager := clustermanager.NewClusterManagerFromCluster(*cluster, hetznerProvider, sshClient, coordinator) nodes := []clustermanager.Node{externalNode} diff --git a/cmd/cluster_create.go b/cmd/cluster_create.go index 582b1395..8b1b96db 100644 --- a/cmd/cluster_create.go +++ b/cmd/cluster_create.go @@ -79,18 +79,18 @@ func RunClusterCreate(cmd *cobra.Command, args []string) { workerServerType, _ := cmd.Flags().GetString("worker-server-type") datacenters, _ := cmd.Flags().GetStringSlice("datacenters") nodeCidr, _ := cmd.Flags().GetString("node-cidr") + cloudInit, _ := cmd.Flags().GetString("cloud-init") + + hetznerProvider := hetzner.NewHetznerProvider(AppConf.Context, AppConf.Client, clustermanager.Cluster{ + Name: clusterName, + NodeCIDR: nodeCidr, + CloudInitFile: cloudInit, + }, AppConf.CurrentContext.Token) - hetznerProvider := hetzner.NewHetznerProvider(AppConf.Context, AppConf.Client, AppConf.CurrentContext.Token) - hetznerProvider.InitCluster(clusterName, nodeCidr) sshClient := clustermanager.NewSSHCommunicator(AppConf.Config.SSHKeys) err := sshClient.(*clustermanager.SSHCommunicator).CapturePassphrase(sshKeyName) FatalOnError(err) - var cloudInit string - if cloudInit, _ = cmd.Flags().GetString("cloud-init"); cloudInit != "" { - hetznerProvider.SetCloudInitFile(cloudInit) - } - if haEnabled && isolatedEtcd { if _, err := hetznerProvider.CreateEtcdNodes(sshKeyName, masterServerType, datacenters, etcdCount); err != nil { log.Println(err) diff --git a/pkg/hetzner/hetzner_provider.go b/pkg/hetzner/hetzner_provider.go index b2dffbfb..84f8c25d 100644 --- a/pkg/hetzner/hetzner_provider.go +++ b/pkg/hetzner/hetzner_provider.go @@ -28,19 +28,16 @@ type Provider struct { } // NewHetznerProvider returns an instance of hetzner.Provider -func NewHetznerProvider(context context.Context, client *hcloud.Client, token string) *Provider { - return &Provider{client: client, context: context, token: token} -} - -// InitCluster provides cluster information for further creation -func (provider *Provider) InitCluster(clusterName, nodeCidr string) { - provider.clusterName = clusterName - provider.nodeCidr = nodeCidr -} - -// SetCloudInitFile sets cloud init file for node provisioning -func (provider *Provider) SetCloudInitFile(cloudInitFile string) { - provider.cloudInitFile = cloudInitFile +func NewHetznerProvider(context context.Context, client *hcloud.Client, cluster clustermanager.Cluster, token string) *Provider { + return &Provider{ + client: client, + context: context, + token: token, + nodeCidr: cluster.NodeCIDR, + clusterName: cluster.Name, + cloudInitFile: cluster.CloudInitFile, + nodes: cluster.Nodes, + } } // CreateNodes creates hetzner nodes diff --git a/pkg/hetzner/util.go b/pkg/hetzner/util.go index f7306369..3b7e9c4b 100644 --- a/pkg/hetzner/util.go +++ b/pkg/hetzner/util.go @@ -9,9 +9,8 @@ import ( //ProviderAndManager get the provider and the manager for the cluster func ProviderAndManager(context context.Context, cluster clustermanager.Cluster, client *hcloud.Client, nc clustermanager.NodeCommunicator, eventService clustermanager.EventService, token string) (*Provider, *clustermanager.Manager) { - provider := NewHetznerProvider(context, client, token) - provider.InitCluster(cluster.Name, cluster.NodeCIDR) - provider.SetNodes(cluster.Nodes) + provider := NewHetznerProvider(context, client, cluster, token) + manager := clustermanager.NewClusterManagerFromCluster(cluster, provider, nc, eventService) return provider, manager