From c0e37ec4e7643cea762129221e68211a1f3540d3 Mon Sep 17 00:00:00 2001 From: Alejandro Escobar Date: Tue, 24 Jul 2018 10:06:05 -0700 Subject: [PATCH 1/7] created external cluster provisioner --- .../externalcluster.go | 49 +++++++++++++++++++ .../externalcluster_test.go | 1 + 2 files changed, 50 insertions(+) create mode 100644 clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster.go create mode 100644 clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster_test.go diff --git a/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster.go b/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster.go new file mode 100644 index 000000000000..98bbd0396853 --- /dev/null +++ b/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster.go @@ -0,0 +1,49 @@ +package clusterdeployer + +import ( + "io/ioutil" + "os" + "fmt" +) + +// Represents an actual external cluster being used, should not be able to +// actually delete or create, but can point to actual kubeconfig file. +type externalCluster struct { + kubeconfigPath string + kubeconfigFile string +} + + +func NewExternalCluster(kubeconfigPath string) (*externalCluster, error) { + if _, err := os.Stat(kubeconfigPath); os.IsNotExist(err) { + return nil, fmt.Errorf("file at %s does not exist", kubeconfigPath) + } + + return &externalCluster{kubeconfigPath:kubeconfigPath}, nil +} + + +func (e *externalCluster) Create() error { + // noop + return nil +} + +func (e *externalCluster) Delete() error { + // noop + return nil +} + +func (e *externalCluster) GetKubeconfig() (string, error) { + + if e.kubeconfigFile == "" { + b, err := ioutil.ReadFile(e.kubeconfigPath) + if err != nil { + return "", err + } + + e.kubeconfigFile = string(b) + } + + + return e.kubeconfigFile, nil +} \ No newline at end of file diff --git a/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster_test.go b/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster_test.go new file mode 100644 index 000000000000..ff19e1f9cf0d --- /dev/null +++ b/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster_test.go @@ -0,0 +1 @@ +package externalclusterprovisioner From 7939f1aaea19d41f8141de93610aadfdfbfda207 Mon Sep 17 00:00:00 2001 From: Alejandro Escobar Date: Tue, 24 Jul 2018 10:07:21 -0700 Subject: [PATCH 2/7] changes made here to support external provisioner that isnt minikube --- .../externalcluster.go | 2 +- clusterctl/cmd/create_cluster.go | 33 +++++++++++++------ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster.go b/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster.go index 98bbd0396853..31e736aeae5d 100644 --- a/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster.go +++ b/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster.go @@ -1,4 +1,4 @@ -package clusterdeployer +package externalclusterprovisioner import ( "io/ioutil" diff --git a/clusterctl/cmd/create_cluster.go b/clusterctl/cmd/create_cluster.go index bef9661ca011..0b0c94ae89bd 100644 --- a/clusterctl/cmd/create_cluster.go +++ b/clusterctl/cmd/create_cluster.go @@ -25,20 +25,22 @@ import ( "github.com/spf13/cobra" "sigs.k8s.io/cluster-api/clusterctl/clusterdeployer" "sigs.k8s.io/cluster-api/clusterctl/clusterdeployer/minikube" + "sigs.k8s.io/cluster-api/clusterctl/clusterdeployer/externalclusterprovisioner" clustercommon "sigs.k8s.io/cluster-api/pkg/apis/cluster/common" clusterv1 "sigs.k8s.io/cluster-api/pkg/apis/cluster/v1alpha1" "sigs.k8s.io/cluster-api/pkg/util" ) type CreateOptions struct { - Cluster string - Machine string - ProviderComponents string - AddonComponents string - CleanupExternalCluster bool - VmDriver string - Provider string - KubeconfigOutput string + Cluster string + Machine string + ProviderComponents string + AddonComponents string + CleanupExternalCluster bool + VmDriver string + Provider string + KubeconfigOutput string + ExistingClusterKubeconfigPath string } var co = &CreateOptions{} @@ -73,7 +75,17 @@ func RunCreate(co *CreateOptions) error { return err } - mini := minikube.New(co.VmDriver) + var exernalProvider clusterdeployer.ClusterProvisioner + if co.ExistingClusterKubeconfigPath != "" { + exernalProvider, err = externalclusterprovisioner.NewExternalCluster(co.ExistingClusterKubeconfigPath) + if err != nil { + return err + } + } else { + exernalProvider = minikube.New(co.VmDriver) + + } + pd, err := getProvider(co.Provider) if err != nil { return err @@ -91,7 +103,7 @@ func RunCreate(co *CreateOptions) error { } pcsFactory := clusterdeployer.NewProviderComponentsStoreFactory() d := clusterdeployer.New( - mini, + exernalProvider, clusterdeployer.NewClientFactory(), string(pc), string(ac), @@ -112,6 +124,7 @@ func init() { createClusterCmd.Flags().BoolVarP(&co.CleanupExternalCluster, "cleanup-external-cluster", "", true, "Whether to cleanup the external cluster after bootstrap") createClusterCmd.Flags().StringVarP(&co.VmDriver, "vm-driver", "", "", "Which vm driver to use for minikube") createClusterCmd.Flags().StringVarP(&co.KubeconfigOutput, "kubeconfig-out", "", "kubeconfig", "Where to output the kubeconfig for the provisioned cluster") + createClusterCmd.Flags().StringVarP(&co.ExistingClusterKubeconfigPath, "existing-cluster-kubeconfig", "k", "", "path to an existing cluster's kubeconfig (intead of using minikube)") createCmd.AddCommand(createClusterCmd) } From c9bf258aa079d2340178223deb6503911485a615 Mon Sep 17 00:00:00 2001 From: Alejandro Escobar Date: Tue, 24 Jul 2018 10:34:21 -0700 Subject: [PATCH 3/7] added testing to the new external cluster provisioner --- .../externalcluster_test.go | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster_test.go b/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster_test.go index ff19e1f9cf0d..2f6c6ee75f81 100644 --- a/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster_test.go +++ b/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster_test.go @@ -1 +1,50 @@ package externalclusterprovisioner + +import ( + "testing" + "os" + "io/ioutil" +) + +func TestGetKubeconfig(t *testing.T) { + const contents = "dfserfafaew" + f, err := createTempFile(contents) + if err != nil { + t.Fatal("Unable to create test file.") + } + defer os.Remove(f) + + t.Run("invalid path given", func(t *testing.T){ + _, err = NewExternalCluster("") + if err == nil { + t.Fatal("Should not be able create External Cluster Provisioner.") + } + }) + + t.Run("file exists", func(t *testing.T) { + + ec, err := NewExternalCluster(f) + if err != nil { + t.Fatal("Should be able create External Cluster Provisioner.") + } + + c, err := ec.GetKubeconfig() + if err != nil { + t.Fatalf("Unexpected err. Got: %v", err) + return + } + if c != contents { + t.Fatalf("Unexpected contents. Got: %v, Want: %v", c, contents) + } + }) +} + +func createTempFile(contents string) (string, error) { + f, err := ioutil.TempFile("", "") + if err != nil { + return "", err + } + defer f.Close() + f.WriteString(contents) + return f.Name(), nil +} \ No newline at end of file From e2fca82dbbbcd5f6028f227d3d2fcd12c60a4b17 Mon Sep 17 00:00:00 2001 From: Alejandro Escobar Date: Tue, 24 Jul 2018 11:24:25 -0700 Subject: [PATCH 4/7] updated golden files to make sure tests run --- ...create-cluster-no-args-invalid-flag.golden | 19 ++++++++++--------- .../testdata/create-cluster-no-args.golden | 19 ++++++++++--------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/clusterctl/testdata/create-cluster-no-args-invalid-flag.golden b/clusterctl/testdata/create-cluster-no-args-invalid-flag.golden index 46ea57cc3ebf..1259dad2ff69 100644 --- a/clusterctl/testdata/create-cluster-no-args-invalid-flag.golden +++ b/clusterctl/testdata/create-cluster-no-args-invalid-flag.golden @@ -3,15 +3,16 @@ Usage: clusterctl create cluster [flags] Flags: - -a, --addon-components string A yaml file containing cluster addons to apply to the internal cluster - --cleanup-external-cluster Whether to cleanup the external cluster after bootstrap (default true) - -c, --cluster string A yaml file containing cluster object definition - -h, --help help for cluster - --kubeconfig-out string Where to output the kubeconfig for the provisioned cluster (default "kubeconfig") - -m, --machines string A yaml file containing machine object definition(s) - --provider string Which provider deployment logic to use (google/vsphere/azure) - -p, --provider-components string A yaml file containing cluster api provider controllers and supporting objects - --vm-driver string Which vm driver to use for minikube + -a, --addon-components string A yaml file containing cluster addons to apply to the internal cluster + --cleanup-external-cluster Whether to cleanup the external cluster after bootstrap (default true) + -c, --cluster string A yaml file containing cluster object definition + -k, --existing-cluster-kubeconfig string path to an existing cluster's kubeconfig (intead of using minikube) + -h, --help help for cluster + --kubeconfig-out string Where to output the kubeconfig for the provisioned cluster (default "kubeconfig") + -m, --machines string A yaml file containing machine object definition(s) + --provider string Which provider deployment logic to use (google/vsphere/azure) + -p, --provider-components string A yaml file containing cluster api provider controllers and supporting objects + --vm-driver string Which vm driver to use for minikube Global Flags: --alsologtostderr log to standard error as well as files diff --git a/clusterctl/testdata/create-cluster-no-args.golden b/clusterctl/testdata/create-cluster-no-args.golden index dfc920e4b753..1955d8ed474f 100644 --- a/clusterctl/testdata/create-cluster-no-args.golden +++ b/clusterctl/testdata/create-cluster-no-args.golden @@ -5,15 +5,16 @@ Usage: clusterctl create cluster [flags] Flags: - -a, --addon-components string A yaml file containing cluster addons to apply to the internal cluster - --cleanup-external-cluster Whether to cleanup the external cluster after bootstrap (default true) - -c, --cluster string A yaml file containing cluster object definition - -h, --help help for cluster - --kubeconfig-out string Where to output the kubeconfig for the provisioned cluster (default "kubeconfig") - -m, --machines string A yaml file containing machine object definition(s) - --provider string Which provider deployment logic to use (google/vsphere/azure) - -p, --provider-components string A yaml file containing cluster api provider controllers and supporting objects - --vm-driver string Which vm driver to use for minikube + -a, --addon-components string A yaml file containing cluster addons to apply to the internal cluster + --cleanup-external-cluster Whether to cleanup the external cluster after bootstrap (default true) + -c, --cluster string A yaml file containing cluster object definition + -k, --existing-cluster-kubeconfig string path to an existing cluster's kubeconfig (intead of using minikube) + -h, --help help for cluster + --kubeconfig-out string Where to output the kubeconfig for the provisioned cluster (default "kubeconfig") + -m, --machines string A yaml file containing machine object definition(s) + --provider string Which provider deployment logic to use (google/vsphere/azure) + -p, --provider-components string A yaml file containing cluster api provider controllers and supporting objects + --vm-driver string Which vm driver to use for minikube Global Flags: --alsologtostderr log to standard error as well as files From 5f39296f870e1fac5fb8de7d0d21c1d139a9715e Mon Sep 17 00:00:00 2001 From: Alejandro Escobar Date: Tue, 24 Jul 2018 21:02:15 -0700 Subject: [PATCH 5/7] pr changes. --- clusterctl/clusterdeployer/clusterdeployer.go | 3 + .../externalbootstrapcluster.go | 56 +++++++++++++++++++ ...st.go => externalbootstrapcluster_test.go} | 0 .../externalcluster.go | 49 ---------------- clusterctl/cmd/create_cluster.go | 10 ++-- ...create-cluster-no-args-invalid-flag.golden | 20 +++---- .../testdata/create-cluster-no-args.golden | 20 +++---- 7 files changed, 84 insertions(+), 74 deletions(-) create mode 100644 clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster.go rename clusterctl/clusterdeployer/externalclusterprovisioner/{externalcluster_test.go => externalbootstrapcluster_test.go} (100%) delete mode 100644 clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster.go diff --git a/clusterctl/clusterdeployer/clusterdeployer.go b/clusterctl/clusterdeployer/clusterdeployer.go index 54baa5ae858a..b3d7c42393d7 100644 --- a/clusterctl/clusterdeployer/clusterdeployer.go +++ b/clusterctl/clusterdeployer/clusterdeployer.go @@ -230,12 +230,14 @@ func (d *ClusterDeployer) createExternalCluster() (ClusterClient, func(), error) if err := d.externalProvisioner.Create(); err != nil { return nil, cleanupFn, fmt.Errorf("could not create external control plane: %v", err) } + if d.cleanupExternalCluster { cleanupFn = func() { glog.Info("Cleaning up external cluster.") d.externalProvisioner.Delete() } } + externalKubeconfig, err := d.externalProvisioner.GetKubeconfig() if err != nil { return nil, cleanupFn, fmt.Errorf("unable to get external cluster kubeconfig: %v", err) @@ -244,6 +246,7 @@ func (d *ClusterDeployer) createExternalCluster() (ClusterClient, func(), error) if err != nil { return nil, cleanupFn, fmt.Errorf("unable to create external client: %v", err) } + return externalClient, cleanupFn, nil } diff --git a/clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster.go b/clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster.go new file mode 100644 index 000000000000..5520283cb634 --- /dev/null +++ b/clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster.go @@ -0,0 +1,56 @@ +package externalclusterprovisioner + +import ( + "io/ioutil" + "os" + "fmt" +) + +// Represents an actual external cluster being used for bootstrapping, should not be able to +// actually delete or create, but can point to actual kubeconfig file. +type ExternalBootstrapCluster struct { + kubeconfigPath string + kubeconfigFile string +} + + +func NewExternalCluster(kubeconfigPath string) (*ExternalBootstrapCluster, error) { + if _, err := os.Stat(kubeconfigPath); os.IsNotExist(err) { + return nil, fmt.Errorf("file at %s does not exist", kubeconfigPath) + } + + return &ExternalBootstrapCluster{kubeconfigPath:kubeconfigPath}, nil +} + +// Create implements clusterdeployer.ClusterProvisioner interface +func (e *ExternalBootstrapCluster) Create() error { + // noop + return nil +} +// Delete implements clusterdeployer.ClusterProvisioner interface +func (e *ExternalBootstrapCluster) Delete() error { + // noop + return nil +} + +// GetKubeconfig implements clusterdeployer.ClusterProvisioner interface +func (e *ExternalBootstrapCluster) GetKubeconfig() (string, error) { + + if e.kubeconfigFile == "" { + b, err := ioutil.ReadFile(e.kubeconfigPath) + if err != nil { + return "", err + } + + e.kubeconfigFile = string(b) + } + + + return e.kubeconfigFile, nil +} + + + +func CleanUpExternalCluster() { + +} \ No newline at end of file diff --git a/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster_test.go b/clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster_test.go similarity index 100% rename from clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster_test.go rename to clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster_test.go diff --git a/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster.go b/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster.go deleted file mode 100644 index 31e736aeae5d..000000000000 --- a/clusterctl/clusterdeployer/externalclusterprovisioner/externalcluster.go +++ /dev/null @@ -1,49 +0,0 @@ -package externalclusterprovisioner - -import ( - "io/ioutil" - "os" - "fmt" -) - -// Represents an actual external cluster being used, should not be able to -// actually delete or create, but can point to actual kubeconfig file. -type externalCluster struct { - kubeconfigPath string - kubeconfigFile string -} - - -func NewExternalCluster(kubeconfigPath string) (*externalCluster, error) { - if _, err := os.Stat(kubeconfigPath); os.IsNotExist(err) { - return nil, fmt.Errorf("file at %s does not exist", kubeconfigPath) - } - - return &externalCluster{kubeconfigPath:kubeconfigPath}, nil -} - - -func (e *externalCluster) Create() error { - // noop - return nil -} - -func (e *externalCluster) Delete() error { - // noop - return nil -} - -func (e *externalCluster) GetKubeconfig() (string, error) { - - if e.kubeconfigFile == "" { - b, err := ioutil.ReadFile(e.kubeconfigPath) - if err != nil { - return "", err - } - - e.kubeconfigFile = string(b) - } - - - return e.kubeconfigFile, nil -} \ No newline at end of file diff --git a/clusterctl/cmd/create_cluster.go b/clusterctl/cmd/create_cluster.go index 0b0c94ae89bd..970198e96db4 100644 --- a/clusterctl/cmd/create_cluster.go +++ b/clusterctl/cmd/create_cluster.go @@ -75,14 +75,14 @@ func RunCreate(co *CreateOptions) error { return err } - var exernalProvider clusterdeployer.ClusterProvisioner + var externalProvider clusterdeployer.ClusterProvisioner if co.ExistingClusterKubeconfigPath != "" { - exernalProvider, err = externalclusterprovisioner.NewExternalCluster(co.ExistingClusterKubeconfigPath) + externalProvider, err = externalclusterprovisioner.NewExternalCluster(co.ExistingClusterKubeconfigPath) if err != nil { return err } } else { - exernalProvider = minikube.New(co.VmDriver) + externalProvider = minikube.New(co.VmDriver) } @@ -103,7 +103,7 @@ func RunCreate(co *CreateOptions) error { } pcsFactory := clusterdeployer.NewProviderComponentsStoreFactory() d := clusterdeployer.New( - exernalProvider, + externalProvider, clusterdeployer.NewClientFactory(), string(pc), string(ac), @@ -124,7 +124,7 @@ func init() { createClusterCmd.Flags().BoolVarP(&co.CleanupExternalCluster, "cleanup-external-cluster", "", true, "Whether to cleanup the external cluster after bootstrap") createClusterCmd.Flags().StringVarP(&co.VmDriver, "vm-driver", "", "", "Which vm driver to use for minikube") createClusterCmd.Flags().StringVarP(&co.KubeconfigOutput, "kubeconfig-out", "", "kubeconfig", "Where to output the kubeconfig for the provisioned cluster") - createClusterCmd.Flags().StringVarP(&co.ExistingClusterKubeconfigPath, "existing-cluster-kubeconfig", "k", "", "path to an existing cluster's kubeconfig (intead of using minikube)") + createClusterCmd.Flags().StringVarP(&co.ExistingClusterKubeconfigPath, "existing-bootstrap-cluster-kubeconfig", "", "", "Path to an existing cluster's kubeconfig for bootstrapping (intead of using minikube)") createCmd.AddCommand(createClusterCmd) } diff --git a/clusterctl/testdata/create-cluster-no-args-invalid-flag.golden b/clusterctl/testdata/create-cluster-no-args-invalid-flag.golden index 1259dad2ff69..624c2ae2abb2 100644 --- a/clusterctl/testdata/create-cluster-no-args-invalid-flag.golden +++ b/clusterctl/testdata/create-cluster-no-args-invalid-flag.golden @@ -3,16 +3,16 @@ Usage: clusterctl create cluster [flags] Flags: - -a, --addon-components string A yaml file containing cluster addons to apply to the internal cluster - --cleanup-external-cluster Whether to cleanup the external cluster after bootstrap (default true) - -c, --cluster string A yaml file containing cluster object definition - -k, --existing-cluster-kubeconfig string path to an existing cluster's kubeconfig (intead of using minikube) - -h, --help help for cluster - --kubeconfig-out string Where to output the kubeconfig for the provisioned cluster (default "kubeconfig") - -m, --machines string A yaml file containing machine object definition(s) - --provider string Which provider deployment logic to use (google/vsphere/azure) - -p, --provider-components string A yaml file containing cluster api provider controllers and supporting objects - --vm-driver string Which vm driver to use for minikube + -a, --addon-components string A yaml file containing cluster addons to apply to the internal cluster + --cleanup-external-cluster Whether to cleanup the external cluster after bootstrap (default true) + -c, --cluster string A yaml file containing cluster object definition + --existing-bootstrap-cluster-kubeconfig string Path to an existing cluster's kubeconfig for bootstrapping (intead of using minikube) + -h, --help help for cluster + --kubeconfig-out string Where to output the kubeconfig for the provisioned cluster (default "kubeconfig") + -m, --machines string A yaml file containing machine object definition(s) + --provider string Which provider deployment logic to use (google/vsphere/azure) + -p, --provider-components string A yaml file containing cluster api provider controllers and supporting objects + --vm-driver string Which vm driver to use for minikube Global Flags: --alsologtostderr log to standard error as well as files diff --git a/clusterctl/testdata/create-cluster-no-args.golden b/clusterctl/testdata/create-cluster-no-args.golden index 1955d8ed474f..2e883c8615e2 100644 --- a/clusterctl/testdata/create-cluster-no-args.golden +++ b/clusterctl/testdata/create-cluster-no-args.golden @@ -5,16 +5,16 @@ Usage: clusterctl create cluster [flags] Flags: - -a, --addon-components string A yaml file containing cluster addons to apply to the internal cluster - --cleanup-external-cluster Whether to cleanup the external cluster after bootstrap (default true) - -c, --cluster string A yaml file containing cluster object definition - -k, --existing-cluster-kubeconfig string path to an existing cluster's kubeconfig (intead of using minikube) - -h, --help help for cluster - --kubeconfig-out string Where to output the kubeconfig for the provisioned cluster (default "kubeconfig") - -m, --machines string A yaml file containing machine object definition(s) - --provider string Which provider deployment logic to use (google/vsphere/azure) - -p, --provider-components string A yaml file containing cluster api provider controllers and supporting objects - --vm-driver string Which vm driver to use for minikube + -a, --addon-components string A yaml file containing cluster addons to apply to the internal cluster + --cleanup-external-cluster Whether to cleanup the external cluster after bootstrap (default true) + -c, --cluster string A yaml file containing cluster object definition + --existing-bootstrap-cluster-kubeconfig string Path to an existing cluster's kubeconfig for bootstrapping (intead of using minikube) + -h, --help help for cluster + --kubeconfig-out string Where to output the kubeconfig for the provisioned cluster (default "kubeconfig") + -m, --machines string A yaml file containing machine object definition(s) + --provider string Which provider deployment logic to use (google/vsphere/azure) + -p, --provider-components string A yaml file containing cluster api provider controllers and supporting objects + --vm-driver string Which vm driver to use for minikube Global Flags: --alsologtostderr log to standard error as well as files From 8fab2a4a5e1463a72abfbfd14e48fbc084f3de72 Mon Sep 17 00:00:00 2001 From: Alejandro Escobar Date: Tue, 24 Jul 2018 21:03:37 -0700 Subject: [PATCH 6/7] removed unused test function --- .../externalclusterprovisioner/externalbootstrapcluster.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster.go b/clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster.go index 5520283cb634..874cb401237c 100644 --- a/clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster.go +++ b/clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster.go @@ -48,9 +48,3 @@ func (e *ExternalBootstrapCluster) GetKubeconfig() (string, error) { return e.kubeconfigFile, nil } - - - -func CleanUpExternalCluster() { - -} \ No newline at end of file From a8a0f866418fc489df3011aad7e9c603af794fc6 Mon Sep 17 00:00:00 2001 From: Alejandro Escobar Date: Wed, 25 Jul 2018 13:53:02 -0700 Subject: [PATCH 7/7] comment made to externalboostrapcluster referencing issue that needs to be addressed soon. --- .../externalclusterprovisioner/externalbootstrapcluster.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster.go b/clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster.go index 874cb401237c..c11e2c581d20 100644 --- a/clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster.go +++ b/clusterctl/clusterdeployer/externalclusterprovisioner/externalbootstrapcluster.go @@ -13,7 +13,9 @@ type ExternalBootstrapCluster struct { kubeconfigFile string } - +// NewExternalCluster creates a new external k8s bootstrap cluster object +// We should clean up any lingering resources when clusterctl is complete. +// TODO https://github.com/kubernetes-sigs/cluster-api/issues/448 func NewExternalCluster(kubeconfigPath string) (*ExternalBootstrapCluster, error) { if _, err := os.Stat(kubeconfigPath); os.IsNotExist(err) { return nil, fmt.Errorf("file at %s does not exist", kubeconfigPath)