From 9358f4e91a92a330e07a9ef9be204052d51108de Mon Sep 17 00:00:00 2001 From: Michael Kuzmin Date: Wed, 17 Oct 2018 02:15:27 +0300 Subject: [PATCH] firmware: validation & tests --- driver/vm.go | 4 +++- iso/builder_acc_test.go | 13 ++++++++++++- iso/step_create.go | 4 ++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/driver/vm.go b/driver/vm.go index 0171ac606..690d40869 100644 --- a/driver/vm.go +++ b/driver/vm.go @@ -81,11 +81,13 @@ func (d *Driver) CreateVM(config *CreateConfig) (*VirtualMachine, error) { Name: config.Name, Annotation: config.Annotation, GuestId: config.GuestOS, - Firmware: config.Firmware, } if config.Version != 0 { createSpec.Version = fmt.Sprintf("%s%d", "vmx-", config.Version) } + if config.Firmware != "" { + createSpec.Firmware = config.Firmware + } folder, err := d.FindFolder(config.Folder) if err != nil { diff --git a/iso/builder_acc_test.go b/iso/builder_acc_test.go index 5f4c6de89..6d2ceec6a 100644 --- a/iso/builder_acc_test.go +++ b/iso/builder_acc_test.go @@ -45,7 +45,7 @@ func checkDefault(t *testing.T, name string, host string, datastore string) buil d := commonT.TestConn(t) vm := commonT.GetVM(t, d, artifacts) - vmInfo, err := vm.Info("name", "parent", "runtime.host", "resourcePool", "datastore", "layoutEx.disk") + vmInfo, err := vm.Info("name", "parent", "runtime.host", "resourcePool", "datastore", "layoutEx.disk", "config.firmware") if err != nil { t.Fatalf("Cannot read VM properties: %v", err) } @@ -91,6 +91,11 @@ func checkDefault(t *testing.T, name string, host string, datastore string) buil t.Errorf("Invalid datastore name: expected '%v', got '%v'", datastore, dsInfo.Name) } + fw := vmInfo.Config.Firmware + if fw != "bios" { + t.Errorf("Invalid firmware: expected 'bios', got '%v'", fw) + } + return nil } } @@ -111,6 +116,7 @@ func hardwareConfig() string { config["RAM"] = 2048 config["RAM_reservation"] = 1024 config["NestedHV"] = true + config["firmware"] = "efi" return commonT.RenderConfig(config) } @@ -155,6 +161,11 @@ func checkHardware(t *testing.T) builderT.TestCheckFunc { t.Errorf("VM should have NestedHV enabled, got %v", nestedHV) } + fw := vmInfo.Config.Firmware + if fw != "efi" { + t.Errorf("Invalid firmware: expected 'efi', got '%v'", fw) + } + return nil } } diff --git a/iso/step_create.go b/iso/step_create.go index 5a23bd535..39d448b55 100644 --- a/iso/step_create.go +++ b/iso/step_create.go @@ -34,8 +34,8 @@ func (c *CreateConfig) Prepare() []error { c.GuestOSType = "otherGuest" } - if (c.Firmware == "") { - c.Firmware = "bios" + if (c.Firmware != "" && c.Firmware != "bios" && c.Firmware != "efi") { + errs = append(errs, fmt.Errorf("'firmware' must be 'bios' or 'efi'")) } return errs