Skip to content

Commit 68cecba

Browse files
authored
Merge pull request #579 from hashicorp/fix/acpi-motherboard-layout-for-efi
refactor: set firmware configuration during create
2 parents 28708b5 + 34fa2bd commit 68cecba

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

builder/vsphere/driver/vm.go

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

builder/vsphere/iso/builder.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook)
8484
Config: &b.config.CreateConfig,
8585
Location: &b.config.LocationConfig,
8686
Force: b.config.PackerForce,
87+
Firmware: b.config.Firmware,
8788
},
8889
&common.StepConfigureHardware{
8990
Config: &b.config.HardwareConfig,

builder/vsphere/iso/step_create.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ type StepCreateVM struct {
170170
Config *CreateConfig
171171
Location *common.LocationConfig
172172
Force bool
173+
Firmware string
173174
GeneratedData *packerbuilderdata.GeneratedData
174175
}
175176

@@ -228,6 +229,7 @@ func (s *StepCreateVM) Run(_ context.Context, state multistep.StateBag) multiste
228229
NICs: networkCards,
229230
USBController: s.Config.USBController,
230231
Version: s.Config.Version,
232+
Firmware: s.Firmware,
231233
})
232234
if err != nil {
233235
state.Put("error", fmt.Errorf("error creating virtual machine: %v", err))

0 commit comments

Comments
 (0)