Skip to content

Commit

Permalink
centralize cloud provider creation informations
Browse files Browse the repository at this point in the history
  • Loading branch information
mavimo committed Aug 23, 2018
1 parent c7b8919 commit cbfc457
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 28 deletions.
9 changes: 4 additions & 5 deletions cmd/cluster_add_external_worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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}
Expand Down
14 changes: 7 additions & 7 deletions cmd/cluster_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
23 changes: 10 additions & 13 deletions pkg/hetzner/hetzner_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 2 additions & 3 deletions pkg/hetzner/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit cbfc457

Please sign in to comment.