@@ -143,6 +143,7 @@ type CreateConfig struct {
143143 NICs []NIC
144144 USBController []string
145145 Version uint
146+ Firmware string
146147 StorageConfig StorageConfig
147148}
148149
@@ -218,6 +219,19 @@ func (d *VCenterDriver) CreateVM(config *CreateConfig) (VirtualMachine, error) {
218219 createSpec .Version = fmt .Sprintf ("%s%d" , "vmx-" , config .Version )
219220 }
220221
222+ // Set firmware, if specified.
223+ if config .Firmware != "" {
224+ firmware := config .Firmware
225+ efiSecureBootEnabled := firmware == "efi-secure"
226+ if efiSecureBootEnabled {
227+ firmware = "efi"
228+ }
229+ createSpec .Firmware = firmware
230+ createSpec .BootOptions = & types.VirtualMachineBootOptions {
231+ EfiSecureBootEnabled : types .NewBool (efiSecureBootEnabled ),
232+ }
233+ }
234+
221235 folder , err := d .FindFolder (config .Folder )
222236 if err != nil {
223237 return nil , err
@@ -296,7 +310,9 @@ func (d *VCenterDriver) CreateVM(config *CreateConfig) (VirtualMachine, error) {
296310 return nil , fmt .Errorf ("something went wrong when creating the VM" )
297311 }
298312
299- return d .NewVM (& vmRef ), nil
313+ vm := d .NewVM (& vmRef )
314+
315+ return vm , nil
300316}
301317
302318// Info retrieves properties of the virtual machine object with optional filters
@@ -691,12 +707,10 @@ func (vm *VirtualMachineDriver) Configure(config *HardwareConfig) error {
691707 confSpec .DeviceChange = append (confSpec .DeviceChange , spec )
692708 }
693709
694- efiSecureBootEnabled := false
695710 firmware := config .Firmware
696-
697- if firmware == "efi-secure" {
711+ efiSecureBootEnabled := firmware == "efi-secure"
712+ if efiSecureBootEnabled {
698713 firmware = "efi"
699- efiSecureBootEnabled = true
700714 }
701715
702716 confSpec .Firmware = firmware
@@ -750,7 +764,7 @@ func (vm *VirtualMachineDriver) Configure(config *HardwareConfig) error {
750764 }
751765 }
752766
753- return err
767+ return nil
754768}
755769
756770// Reconfigure modifies the configuration of an existing virtual machine based
0 commit comments