in projects/aws/image-builder/cmd/build.go [398:434]
func validateFirmware(firmware, os, osVersion, hypervisor string) error {
if firmware == "" {
return nil
}
if !builder.SliceContains(builder.SupportedFirmwares, firmware) {
return fmt.Errorf("%s is not a firmware. Please select one of %s", firmware, strings.Join(builder.SupportedFirmwares, ","))
}
if firmware == builder.EFI {
if os == builder.Ubuntu && !builder.SliceContains([]string{builder.VSphere, builder.Baremetal}, hypervisor) {
return fmt.Errorf("For Ubuntu, EFI firmware is only supported for OVA and Raw builds")
}
if os == builder.RedHat {
if !builder.SliceContains([]string{builder.VSphere, builder.Baremetal}, hypervisor) {
return fmt.Errorf("For RedHat, EFI firmware is only supported for OVA and Raw builds")
}
if !builder.SliceContains(builder.SupportedRedHatEfiVersions, osVersion) {
return fmt.Errorf("Only RedHat version 9 supports EFI firmware")
}
}
if !builder.SliceContains([]string{builder.RedHat, builder.Ubuntu}, os) {
return fmt.Errorf("EFI firmware is only support for Ubuntu and Redhat OS")
}
}
if firmware == builder.BIOS && hypervisor == builder.Baremetal {
if os == builder.Ubuntu {
return fmt.Errorf("Ubuntu Raw builds only support EFI firmware")
}
if os == builder.RedHat && builder.SliceContains(builder.SupportedRedHatEfiVersions, osVersion) {
return fmt.Errorf("RedHat version 9 Raw builds only support EFI firmware")
}
}
return nil
}