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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
package machine
import (
"github.com/crc-org/crc/v2/pkg/crc/machine/config"
"github.com/crc-org/crc/v2/pkg/libmachine/host"
libmachine "github.com/crc-org/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)
}
func setSharedDirPassword(host *host.Host, password string) error {
driver, err := loadDriverConfig(host)
if err != nil {
return err
}
if len(driver.SharedDirs) == 0 {
return nil
}
for i := range driver.SharedDirs {
driver.SharedDirs[i].Password = password
}
return updateDriverStruct(host, driver)
}
|