diff --git a/cli/config.go b/cli/config.go index 40d64a788c..fabb8a70b4 100644 --- a/cli/config.go +++ b/cli/config.go @@ -309,6 +309,11 @@ func newQemuHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) { return vc.HypervisorConfig{}, err } + if image != "" && initrd != "" { + return vc.HypervisorConfig{}, + errors.New("cannot specify an image and an initrd in configuration file") + } + firmware, err := h.firmware() if err != nil { return vc.HypervisorConfig{}, err diff --git a/cli/config_test.go b/cli/config_test.go index 5dbdf7524d..c301da3ef7 100644 --- a/cli/config_test.go +++ b/cli/config_test.go @@ -625,6 +625,43 @@ func TestNewQemuHypervisorConfig(t *testing.T) { } +func TestNewQemuHypervisorConfigImageAndInitrd(t *testing.T) { + assert := assert.New(t) + + tmpdir, err := ioutil.TempDir(testDir, "") + assert.NoError(err) + defer os.RemoveAll(tmpdir) + + imagePath := filepath.Join(tmpdir, "image") + initrdPath := filepath.Join(tmpdir, "initrd") + hypervisorPath := path.Join(tmpdir, "hypervisor") + kernelPath := path.Join(tmpdir, "kernel") + + for _, file := range []string{imagePath, initrdPath, hypervisorPath, kernelPath} { + err = createEmptyFile(file) + assert.NoError(err) + } + + machineType := "machineType" + disableBlock := true + enableIOThreads := true + + hypervisor := hypervisor{ + Path: hypervisorPath, + Kernel: kernelPath, + Image: imagePath, + Initrd: initrdPath, + MachineType: machineType, + DisableBlockDeviceUse: disableBlock, + EnableIOThreads: enableIOThreads, + } + + _, err = newQemuHypervisorConfig(hypervisor) + + // specifying both an image+initrd is invalid + assert.Error(err) +} + func TestNewShimConfig(t *testing.T) { dir, err := ioutil.TempDir(testDir, "shim-config-") if err != nil {