Skip to content

Commit 61d38e9

Browse files
add socket_vmnet defaults for darwin amd/arm (#143)
* add socket_vmnet defaults for darwin amd/arm * add acceptance test for socket_vmnet + qemu
1 parent a4a5096 commit 61d38e9

File tree

4 files changed

+82
-6
lines changed

4 files changed

+82
-6
lines changed

minikube/generator/schema_builder.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,32 @@ var schemaOverrides map[string]SchemaOverride = map[string]SchemaOverride{
100100
Description: "A set of key=value pairs that describe configuration that may be passed to different components. The key should be '.' separated, and the first part before the dot is the component to apply the configuration to. Valid components are: kubelet, kubeadm, apiserver, controller-manager, etcd, proxy, scheduler Valid kubeadm parameters: ignore-preflight-errors, dry-run, kubeconfig, kubeconfig-dir, node-name, cri-socket, experimental-upload-certs, certificate-key, rootfs, skip-phases, pod-network-cidr",
101101
Type: Array,
102102
},
103+
"socket_vmnet_path": {
104+
Description: "Path to socket vmnet binary (QEMU driver only)",
105+
Type: String,
106+
DefaultFunc: `func() (any, error) {
107+
var prefix string
108+
if runtime.GOARCH == "arm64" {
109+
prefix = "/opt/homebrew"
110+
} else {
111+
prefix = "/usr/local"
112+
}
113+
return prefix + "/var/run/socket_vmnet", nil
114+
}`,
115+
},
116+
"socket_vmnet_client_path": {
117+
Description: "Path to the socket vmnet client binary (QEMU driver only)",
118+
Type: String,
119+
DefaultFunc: `func() (any, error) {
120+
var prefix string
121+
if runtime.GOARCH == "arm64" {
122+
prefix = "/opt/homebrew"
123+
} else {
124+
prefix = "/usr/local"
125+
}
126+
return prefix + "/opt/socket_vmnet/bin/socket_vmnet_client", nil
127+
}`,
128+
},
103129
}
104130

105131
func run(ctx context.Context, args ...string) (string, error) {

minikube/resource_cluster.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -404,10 +404,12 @@ func initialiseMinikubeClient(d *schema.ResourceData, m interface{}) (lib.Cluste
404404
Nodes: []config.Node{
405405
n,
406406
},
407-
KubernetesConfig: kubernetesConfig,
408-
MultiNodeRequested: multiNode,
409-
StaticIP: d.Get("static_ip").(string),
410-
GPUs: d.Get("gpus").(string),
407+
KubernetesConfig: kubernetesConfig,
408+
MultiNodeRequested: multiNode,
409+
StaticIP: d.Get("static_ip").(string),
410+
GPUs: d.Get("gpus").(string),
411+
SocketVMnetPath: d.Get("socket_vmnet_path").(string),
412+
SocketVMnetClientPath: d.Get("socket_vmnet_client_path").(string),
411413
}
412414

413415
clusterClient.SetConfig(lib.MinikubeClientConfig{

minikube/resource_cluster_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,26 @@ func TestClusterCreation_Hyperkit(t *testing.T) {
197197
})
198198
}
199199

200+
func TestClusterCreation_QemuSocketVmNet(t *testing.T) {
201+
if runtime.GOOS != "darwin" {
202+
t.Skip("Hyperkit is only supported on macOS")
203+
return
204+
}
205+
206+
resource.Test(t, resource.TestCase{
207+
Providers: map[string]*schema.Provider{"minikube": Provider()},
208+
CheckDestroy: verifyDelete,
209+
Steps: []resource.TestStep{
210+
{
211+
Config: testAcceptanceClusterConfigQemuSocketVmNet("qemu2", "TestClusterCreationQemu"),
212+
Check: resource.ComposeTestCheckFunc(
213+
testPropertyExists("minikube_cluster.new", "TestClusterCreationQemu"),
214+
),
215+
},
216+
},
217+
})
218+
}
219+
200220
func TestClusterCreation_HyperV(t *testing.T) {
201221
if runtime.GOOS != "windows" {
202222
t.Skip("HyperV is only supported on windows")
@@ -470,6 +490,18 @@ func testAcceptanceClusterConfig(driver string, clusterName string) string {
470490
`, driver, clusterName)
471491
}
472492

493+
func testAcceptanceClusterConfigQemuSocketVmNet(driver string, clusterName string) string {
494+
return fmt.Sprintf(`
495+
resource "minikube_cluster" "new" {
496+
driver = "%s"
497+
cluster_name = "%s"
498+
499+
network = "socket_vmnet"
500+
501+
}
502+
`, driver, clusterName)
503+
}
504+
473505
func testAcceptanceClusterConfigMultinode(driver string, clusterName string) string {
474506
return fmt.Sprintf(`
475507
resource "minikube_cluster" "new" {

minikube/schema_cluster.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -962,7 +962,15 @@ var (
962962
Optional: true,
963963
ForceNew: true,
964964

965-
Default: "",
965+
DefaultFunc: func() (any, error) {
966+
var prefix string
967+
if runtime.GOARCH == "arm64" {
968+
prefix = "/opt/homebrew"
969+
} else {
970+
prefix = "/usr/local"
971+
}
972+
return prefix + "/opt/socket_vmnet/bin/socket_vmnet_client", nil
973+
},
966974
},
967975

968976
"socket_vmnet_path": {
@@ -972,7 +980,15 @@ var (
972980
Optional: true,
973981
ForceNew: true,
974982

975-
Default: "",
983+
DefaultFunc: func() (any, error) {
984+
var prefix string
985+
if runtime.GOARCH == "arm64" {
986+
prefix = "/opt/homebrew"
987+
} else {
988+
prefix = "/usr/local"
989+
}
990+
return prefix + "/var/run/socket_vmnet", nil
991+
},
976992
},
977993

978994
"ssh_ip_address": {

0 commit comments

Comments
 (0)