From 448821918001a36de7b7d9128bed1e6a9811306a Mon Sep 17 00:00:00 2001 From: Jimmi Dyson Date: Fri, 8 Jul 2016 22:20:36 +0100 Subject: [PATCH] Make disk size configurable --- cmd/minikube/cmd/flags.go | 40 ++++++++++++++++++++++++++ cmd/minikube/cmd/start.go | 7 +++++ docs/minikube_start.md | 1 + pkg/minikube/cluster/cluster.go | 2 ++ pkg/minikube/cluster/cluster_darwin.go | 2 +- pkg/minikube/cluster/cluster_linux.go | 2 +- pkg/minikube/constants/constants.go | 1 + 7 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 cmd/minikube/cmd/flags.go diff --git a/cmd/minikube/cmd/flags.go b/cmd/minikube/cmd/flags.go new file mode 100644 index 000000000..332bdb0c7 --- /dev/null +++ b/cmd/minikube/cmd/flags.go @@ -0,0 +1,40 @@ +/* +Copyright 2016 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cmd + +import "github.com/docker/go-units" + +// unitValue represents an int64 flag specified with units as a string. +type unitValue int64 + +func newUnitValue(v int64) *unitValue { + return (*unitValue)(&v) +} + +func (u *unitValue) Set(s string) error { + v, err := units.FromHumanSize(s) + *u = unitValue(v) + return err +} + +func (u *unitValue) Type() string { + return "unit" +} + +func (u *unitValue) String() string { + return units.HumanSize(float64(*u)) +} diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 067bb6830..a6e12c732 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -22,6 +22,7 @@ import ( "strconv" "strings" + "github.com/docker/go-units" "github.com/docker/machine/libmachine" "github.com/docker/machine/libmachine/host" "github.com/golang/glog" @@ -37,6 +38,7 @@ var ( minikubeISO string memory int cpus int + disk = newUnitValue(20 * units.GB) vmDriver string ) @@ -58,9 +60,12 @@ func runStart(cmd *cobra.Command, args []string) { MinikubeISO: minikubeISO, Memory: memory, CPUs: cpus, + DiskSize: int(*disk / units.MB), VMDriver: vmDriver, } + fmt.Println(config.DiskSize) + var host *host.Host start := func() (err error) { host, err = cluster.StartHost(api, config) @@ -154,5 +159,7 @@ func init() { startCmd.Flags().StringVarP(&vmDriver, "vm-driver", "", constants.DefaultVMDriver, fmt.Sprintf("VM driver is one of: %v", constants.SupportedVMDrivers)) startCmd.Flags().IntVarP(&memory, "memory", "", constants.DefaultMemory, "Amount of RAM allocated to the minikube VM") startCmd.Flags().IntVarP(&cpus, "cpus", "", constants.DefaultCPUS, "Number of CPUs allocated to the minikube VM") + diskFlag := startCmd.Flags().VarPF(disk, "disk-size", "", "Disk size allocated to the minikube VM (format: [], where unit = b, k, m or g)") + diskFlag.DefValue = constants.DefaultDiskSize RootCmd.AddCommand(startCmd) } diff --git a/docs/minikube_start.md b/docs/minikube_start.md index b6854d803..35df617d8 100644 --- a/docs/minikube_start.md +++ b/docs/minikube_start.md @@ -16,6 +16,7 @@ minikube start ``` --cpus=1: Number of CPUs allocated to the minikube VM + --disk-size=20g: Disk size allocated to the minikube VM (format: [], where unit = b, k, m or g) --iso-url="https://storage.googleapis.com/minikube/minikube-0.5.iso": Location of the minikube iso --memory=1024: Amount of RAM allocated to the minikube VM --vm-driver="virtualbox": VM driver is one of: [virtualbox vmwarefusion kvm xhyve] diff --git a/pkg/minikube/cluster/cluster.go b/pkg/minikube/cluster/cluster.go index dcd39261d..c27514498 100644 --- a/pkg/minikube/cluster/cluster.go +++ b/pkg/minikube/cluster/cluster.go @@ -161,6 +161,7 @@ type MachineConfig struct { MinikubeISO string Memory int CPUs int + DiskSize int VMDriver string } @@ -277,6 +278,7 @@ func createHost(api libmachine.API, config MachineConfig) (*host.Host, error) { d.Boot2DockerURL = config.MinikubeISO d.Memory = config.Memory d.CPU = config.CPUs + d.DiskSize = int(config.DiskSize) driver = d case "vmwarefusion": driver = createVMwareFusionHost(config) diff --git a/pkg/minikube/cluster/cluster_darwin.go b/pkg/minikube/cluster/cluster_darwin.go index 4bde535f0..b0a742de4 100644 --- a/pkg/minikube/cluster/cluster_darwin.go +++ b/pkg/minikube/cluster/cluster_darwin.go @@ -61,6 +61,6 @@ func createXhyveHost(config MachineConfig) *xhyveDriver { CPU: config.CPUs, Boot2DockerURL: config.MinikubeISO, BootCmd: "loglevel=3 user=docker console=ttyS0 console=tty0 noembed nomodeset norestore waitusb=10 base host=boot2docker", - DiskSize: 20000, + DiskSize: int64(config.DiskSize), } } diff --git a/pkg/minikube/cluster/cluster_linux.go b/pkg/minikube/cluster/cluster_linux.go index bd51a97a2..a9e371296 100644 --- a/pkg/minikube/cluster/cluster_linux.go +++ b/pkg/minikube/cluster/cluster_linux.go @@ -50,7 +50,7 @@ func createKVMHost(config MachineConfig) *kvmDriver { Network: "default", PrivateNetwork: "docker-machines", Boot2DockerURL: config.MinikubeISO, - DiskSize: 20000, + DiskSize: config.DiskSize, DiskPath: filepath.Join(constants.Minipath, "machines", constants.MachineName, fmt.Sprintf("%s.img", constants.MachineName)), ISO: filepath.Join(constants.Minipath, "machines", constants.MachineName, "boot2docker.iso"), CacheMode: "default", diff --git a/pkg/minikube/constants/constants.go b/pkg/minikube/constants/constants.go index f2ef27347..59994fbad 100644 --- a/pkg/minikube/constants/constants.go +++ b/pkg/minikube/constants/constants.go @@ -61,6 +61,7 @@ const ( DefaultIsoUrl = "https://storage.googleapis.com/minikube/minikube-0.5.iso" DefaultMemory = 1024 DefaultCPUS = 1 + DefaultDiskSize = "20g" DefaultVMDriver = "virtualbox" ) -- GitLab