Skip to content

Commit 19551f1

Browse files
flaper87k8s-ci-robot
authored andcommitted
Proxy cli params to minikube (#485)
1 parent 438fe67 commit 19551f1

File tree

6 files changed

+54
-10
lines changed

6 files changed

+54
-10
lines changed

cmd/clusterctl/clusterdeployer/bootstrap/minikube/minikube.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,19 @@ import (
2727

2828
type Minikube struct {
2929
kubeconfigpath string
30-
vmDriver string
30+
options []string
3131
// minikubeExec implemented as function variable for testing hooks
3232
minikubeExec func(env []string, args ...string) (string, error)
3333
}
3434

35-
func New(vmDriver string) *Minikube {
35+
func New() *Minikube {
36+
return WithOptions([]string{})
37+
}
38+
39+
func WithOptions(options []string) *Minikube {
3640
return &Minikube{
3741
minikubeExec: minikubeExec,
38-
vmDriver: vmDriver,
42+
options: options,
3943
// Arbitrary file name. Can potentially be randomly generated.
4044
kubeconfigpath: "minikube.kubeconfig",
4145
}
@@ -56,8 +60,8 @@ var minikubeExec = func(env []string, args ...string) (string, error) {
5660

5761
func (m *Minikube) Create() error {
5862
args := []string{"start", "--bootstrapper=kubeadm"}
59-
if m.vmDriver != "" {
60-
args = append(args, fmt.Sprintf("--vm-driver=%v", m.vmDriver))
63+
for _, opt := range m.options {
64+
args = append(args, fmt.Sprintf("--%v", opt))
6165
}
6266
_, err := m.exec(args...)
6367
return err

cmd/clusterctl/clusterdeployer/bootstrap/minikube/minikube_test.go

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,36 @@ func TestCreate(t *testing.T) {
4040
}
4141
for _, testcase := range testcases {
4242
t.Run(testcase.name, func(t *testing.T) {
43-
m := New("")
43+
m := New()
44+
m.minikubeExec = func(env []string, args ...string) (string, error) {
45+
return "", testcase.execError
46+
}
47+
err := m.Create()
48+
if (testcase.expectErr && err == nil) || (!testcase.expectErr && err != nil) {
49+
t.Fatalf("Unexpected returned error. Got: %v, Want Err: %v", err, testcase.expectErr)
50+
}
51+
})
52+
}
53+
}
54+
55+
func TestCreateOptions(t *testing.T) {
56+
var testcases = []struct {
57+
name string
58+
execError error
59+
expectErr bool
60+
}{
61+
{
62+
name: "success",
63+
},
64+
{
65+
name: "exec fail",
66+
execError: fmt.Errorf("test error"),
67+
expectErr: true,
68+
},
69+
}
70+
for _, testcase := range testcases {
71+
t.Run(testcase.name, func(t *testing.T) {
72+
m := WithOptions([]string{"vm-driver=kvm2", "insecure-registry='172.16.0.1'"})
4473
m.minikubeExec = func(env []string, args ...string) (string, error) {
4574
return "", testcase.execError
4675
}
@@ -69,7 +98,7 @@ func TestDelete(t *testing.T) {
6998
}
7099
for _, testcase := range testcases {
71100
t.Run(testcase.name, func(t *testing.T) {
72-
m := New("")
101+
m := New()
73102
m.minikubeExec = func(env []string, args ...string) (string, error) {
74103
return "", testcase.execError
75104
}
@@ -83,7 +112,7 @@ func TestDelete(t *testing.T) {
83112

84113
func TestGetKubeconfig(t *testing.T) {
85114
const contents = "dfserfafaew"
86-
m := New("")
115+
m := New()
87116
f, err := createTempFile(contents)
88117
if err != nil {
89118
t.Fatal("Unable to create test file.")

cmd/clusterctl/cmd/create_cluster.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ type CreateOptions struct {
3838
ProviderComponents string
3939
AddonComponents string
4040
CleanupBootstrapCluster bool
41+
MiniKube []string
4142
VmDriver string
4243
Provider string
4344
KubeconfigOutput string
@@ -83,7 +84,11 @@ func RunCreate(co *CreateOptions) error {
8384
return err
8485
}
8586
} else {
86-
bootstrapProvider = minikube.New(co.VmDriver)
87+
if co.VmDriver != "" {
88+
co.MiniKube = append(co.MiniKube, fmt.Sprintf("vm-driver=%s", co.VmDriver))
89+
}
90+
91+
bootstrapProvider = minikube.WithOptions(co.MiniKube)
8792

8893
}
8994

@@ -123,6 +128,7 @@ func init() {
123128
// Optional flags
124129
createClusterCmd.Flags().StringVarP(&co.AddonComponents, "addon-components", "a", "", "A yaml file containing cluster addons to apply to the internal cluster")
125130
createClusterCmd.Flags().BoolVarP(&co.CleanupBootstrapCluster, "cleanup-bootstrap-cluster", "", true, "Whether to cleanup the bootstrap cluster after bootstrap")
131+
createClusterCmd.Flags().StringSliceVarP(&co.MiniKube, "minikube", "", []string{}, "Minikube options")
126132
createClusterCmd.Flags().StringVarP(&co.VmDriver, "vm-driver", "", "", "Which vm driver to use for minikube")
127133
createClusterCmd.Flags().StringVarP(&co.KubeconfigOutput, "kubeconfig-out", "", "kubeconfig", "Where to output the kubeconfig for the provisioned cluster")
128134
createClusterCmd.Flags().StringVarP(&co.ExistingClusterKubeconfigPath, "existing-bootstrap-cluster-kubeconfig", "", "", "Path to an existing cluster's kubeconfig for bootstrapping (intead of using minikube)")

cmd/clusterctl/cmd/delete_cluster.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,10 @@ func RunDelete() error {
7272
return fmt.Errorf("error when creating cluster client: %v", err)
7373
}
7474
defer clusterClient.Close()
75-
mini := minikube.New(do.VmDriver)
75+
if co.VmDriver != "" {
76+
co.MiniKube = append(co.MiniKube, fmt.Sprintf("vm-driver=%s", co.VmDriver))
77+
}
78+
mini := minikube.WithOptions(co.MiniKube)
7679
deployer := clusterdeployer.New(mini,
7780
clusterclient.NewFactory(),
7881
providerComponents,

cmd/clusterctl/testdata/create-cluster-no-args-invalid-flag.golden

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Flags:
1010
-h, --help help for cluster
1111
--kubeconfig-out string Where to output the kubeconfig for the provisioned cluster (default "kubeconfig")
1212
-m, --machines string A yaml file containing machine object definition(s)
13+
--minikube strings Minikube options
1314
--provider string Which provider deployment logic to use (google/vsphere/azure)
1415
-p, --provider-components string A yaml file containing cluster api provider controllers and supporting objects
1516
--vm-driver string Which vm driver to use for minikube

cmd/clusterctl/testdata/create-cluster-no-args.golden

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Flags:
1212
-h, --help help for cluster
1313
--kubeconfig-out string Where to output the kubeconfig for the provisioned cluster (default "kubeconfig")
1414
-m, --machines string A yaml file containing machine object definition(s)
15+
--minikube strings Minikube options
1516
--provider string Which provider deployment logic to use (google/vsphere/azure)
1617
-p, --provider-components string A yaml file containing cluster api provider controllers and supporting objects
1718
--vm-driver string Which vm driver to use for minikube

0 commit comments

Comments
 (0)