diff --git a/cmd/minikube/cmd/flags.go b/cmd/minikube/cmd/flags.go new file mode 100644 index 0000000000000000000000000000000000000000..332bdb0c7b6a56387407e7ebfaab902e12b567b8 --- /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 067bb6830ac7c4a25548c357f1875fa24b1e68f2..a6e12c732c6d8f218a1977143c71e41ac9830ccd 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 b6854d80338f39565a49f0ffd788b437a57f7786..35df617d87f20c91e7cbb15474d5cd6b53e45b63 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 dcd39261d68ea721f2eac279e9ba67f72552a10c..c275144983f3639f5ef52033573e1d0292039ced 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 4bde535f0e09fb7056cc72975964ebfa5f48ebcb..b0a742de4573afbb048a2a5f374c737704692562 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 bd51a97a2a52e2082f49484bf93d94b874e9f032..a9e3712966d7bfeef444d3fbebf3f4f6106505ce 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 f2ef27347442493a5e58d33ee0f5834d5b3c881d..59994fbad85b0d8fecd727bc7bda7751d98cef9e 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" )