diff --git a/cluster/cluster.go b/cluster/cluster.go index 18080b93..b04218cc 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -298,13 +298,3 @@ func (c *Cluster) ApplyAuthzResources(ctx context.Context) error { } return nil } - -func GetLocalRKENodeConfig() *v3.RKEConfigNode { - rkeLocalNode := &v3.RKEConfigNode{ - Address: LocalNodeAddress, - HostnameOverride: LocalNodeHostname, - User: LocalNodeUser, - Role: []string{services.ControlRole, services.WorkerRole, services.ETCDRole}, - } - return rkeLocalNode -} diff --git a/cluster/local.go b/cluster/local.go new file mode 100644 index 00000000..92642677 --- /dev/null +++ b/cluster/local.go @@ -0,0 +1,33 @@ +package cluster + +import ( + "github.com/rancher/rke/services" + "github.com/rancher/types/apis/management.cattle.io/v3" +) + +func GetLocalRKEConfig() *v3.RancherKubernetesEngineConfig { + rkeLocalNode := GetLocalRKENodeConfig() + rkeServices := v3.RKEConfigServices{ + Kubelet: v3.KubeletService{ + BaseService: v3.BaseService{ + Image: DefaultK8sImage, + ExtraArgs: map[string]string{"fail-swap-on": "false"}, + }, + }, + } + return &v3.RancherKubernetesEngineConfig{ + Nodes: []v3.RKEConfigNode{*rkeLocalNode}, + Services: rkeServices, + } + +} + +func GetLocalRKENodeConfig() *v3.RKEConfigNode { + rkeLocalNode := &v3.RKEConfigNode{ + Address: LocalNodeAddress, + HostnameOverride: LocalNodeHostname, + User: LocalNodeUser, + Role: []string{services.ControlRole, services.WorkerRole, services.ETCDRole}, + } + return rkeLocalNode +} diff --git a/cmd/remove.go b/cmd/remove.go index f0570939..3b10cc9e 100644 --- a/cmd/remove.go +++ b/cmd/remove.go @@ -68,7 +68,6 @@ func ClusterRemove( } func clusterRemoveFromCli(ctx *cli.Context) error { - var local bool force := ctx.Bool("force") if !force { reader := bufio.NewReader(os.Stdin) @@ -82,6 +81,9 @@ func clusterRemoveFromCli(ctx *cli.Context) error { return nil } } + if ctx.Bool("local") { + return clusterRemoveLocal(ctx) + } clusterFile, filePath, err := resolveClusterFile(ctx) if err != nil { return fmt.Errorf("Failed to resolve cluster file: %v", err) @@ -91,9 +93,11 @@ func clusterRemoveFromCli(ctx *cli.Context) error { if err != nil { return fmt.Errorf("Failed to parse cluster file: %v", err) } - if ctx.Bool("local") { - rkeConfig.Nodes = []v3.RKEConfigNode{*cluster.GetLocalRKENodeConfig()} - local = true - } - return ClusterRemove(context.Background(), rkeConfig, nil, local, "") + return ClusterRemove(context.Background(), rkeConfig, nil, false, "") +} + +func clusterRemoveLocal(ctx *cli.Context) error { + var rkeConfig *v3.RancherKubernetesEngineConfig + rkeConfig = cluster.GetLocalRKEConfig() + return ClusterRemove(context.Background(), rkeConfig, nil, true, "") } diff --git a/cmd/up.go b/cmd/up.go index dec38288..de0123f2 100644 --- a/cmd/up.go +++ b/cmd/up.go @@ -114,8 +114,9 @@ func ClusterUp( } func clusterUpFromCli(ctx *cli.Context) error { - var local bool - var localConnDialerFactory hosts.DialerFactory + if ctx.Bool("local") { + return clusterUpLocal(ctx) + } clusterFile, filePath, err := resolveClusterFile(ctx) if err != nil { return fmt.Errorf("Failed to resolve cluster file: %v", err) @@ -126,11 +127,24 @@ func clusterUpFromCli(ctx *cli.Context) error { if err != nil { return fmt.Errorf("Failed to parse cluster file: %v", err) } - if ctx.Bool("local") { - rkeConfig.Nodes = []v3.RKEConfigNode{*cluster.GetLocalRKENodeConfig()} - localConnDialerFactory = hosts.LocalHealthcheckFactory - local = true - } - _, _, _, _, err = ClusterUp(context.Background(), rkeConfig, nil, localConnDialerFactory, local, "") + _, _, _, _, err = ClusterUp(context.Background(), rkeConfig, nil, nil, false, "") + return err +} + +func clusterUpLocal(ctx *cli.Context) error { + var rkeConfig *v3.RancherKubernetesEngineConfig + clusterFile, filePath, err := resolveClusterFile(ctx) + if err != nil { + log.Infof(context.Background(), "Failed to resolve cluster file, using default cluster instead") + rkeConfig = cluster.GetLocalRKEConfig() + } else { + clusterFilePath = filePath + rkeConfig, err = cluster.ParseConfig(clusterFile) + if err != nil { + return fmt.Errorf("Failed to parse cluster file: %v", err) + } + rkeConfig.Nodes = []v3.RKEConfigNode{*cluster.GetLocalRKENodeConfig()} + } + _, _, _, _, err = ClusterUp(context.Background(), rkeConfig, nil, hosts.LocalHealthcheckFactory, true, "") return err }