func validateFirmware()

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
}