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
|
package machine
import (
"encoding/json"
"errors"
"github.com/crc-org/crc/v2/pkg/crc/logging"
"github.com/crc-org/crc/v2/pkg/crc/machine/config"
"github.com/crc-org/crc/v2/pkg/crc/machine/vfkit"
machineVf "github.com/crc-org/crc/v2/pkg/drivers/vfkit"
"github.com/crc-org/crc/v2/pkg/libmachine"
"github.com/crc-org/crc/v2/pkg/libmachine/host"
"github.com/crc-org/machine/libmachine/drivers"
)
func newHost(api libmachine.API, machineConfig config.MachineConfig) (*host.Host, error) {
json, err := json.Marshal(vfkit.CreateHost(machineConfig))
if err != nil {
return nil, errors.New("Failed to marshal driver options")
}
return api.NewHost("vf", "", json)
}
func loadDriverConfig(host *host.Host) (*machineVf.Driver, error) {
var vfDriver machineVf.Driver
err := json.Unmarshal(host.RawDriver, &vfDriver)
return &vfDriver, err
}
func updateDriverConfig(host *host.Host, driver *machineVf.Driver) error {
driverData, err := json.Marshal(driver)
if err != nil {
return err
}
return host.UpdateConfig(driverData)
}
func updateKernelArgs(vm *virtualMachine) error {
logging.Info("Updating kernel args...")
sshRunner, err := vm.SSHRunner()
if err != nil {
return err
}
defer sshRunner.Close()
stdout, stderr, err := sshRunner.RunPrivileged("Get kernel args", `-- sh -c 'rpm-ostree kargs'`)
if err != nil {
logging.Errorf("Failed to get kernel args: %v - %s", err, stderr)
return err
}
logging.Debugf("Kernel args: %s", stdout)
vfkitDriver, err := loadDriverConfig(vm.Host)
if err != nil {
return err
}
logging.Debugf("Current Kernel args: %s", vfkitDriver.Cmdline)
vfkitDriver.Cmdline = stdout
if err := updateDriverConfig(vm.Host, vfkitDriver); err != nil {
return err
}
return vm.api.Save(vm.Host)
}
func updateDriverStruct(_ *host.Host, _ *machineVf.Driver) error {
return drivers.ErrNotImplemented
}
|