-
Notifications
You must be signed in to change notification settings - Fork 232
/
driver.go
59 lines (49 loc) · 1.33 KB
/
driver.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package machine
import (
"github.com/code-ready/crc/pkg/crc/machine/config"
"github.com/code-ready/crc/pkg/libmachine/host"
libmachine "github.com/code-ready/machine/libmachine/drivers"
)
type valueSetter func(driver *libmachine.VMDriver) bool
func updateDriverValue(host *host.Host, setDriverValue valueSetter) error {
driver, err := loadDriverConfig(host)
if err != nil {
return err
}
valueChanged := setDriverValue(driver.VMDriver)
if !valueChanged {
return nil
}
return updateDriverConfig(host, driver)
}
func setMemory(host *host.Host, memorySize int) error {
memorySetter := func(driver *libmachine.VMDriver) bool {
if driver.Memory == memorySize {
return false
}
driver.Memory = memorySize
return true
}
return updateDriverValue(host, memorySetter)
}
func setVcpus(host *host.Host, vcpus int) error {
vcpuSetter := func(driver *libmachine.VMDriver) bool {
if driver.CPU == vcpus {
return false
}
driver.CPU = vcpus
return true
}
return updateDriverValue(host, vcpuSetter)
}
func setDiskSize(host *host.Host, diskSizeGiB int) error {
diskSizeSetter := func(driver *libmachine.VMDriver) bool {
capacity := config.ConvertGiBToBytes(diskSizeGiB)
if driver.DiskCapacity == capacity {
return false
}
driver.DiskCapacity = capacity
return true
}
return updateDriverValue(host, diskSizeSetter)
}