apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  labels:
    app.kubernetes.io/component: kubevirt
    app.kubernetes.io/managed-by: virt-operator
    kubevirt.io: ""
  name: virtualmachineclusterpreferences.instancetype.kubevirt.io
spec:
  conversion:
    strategy: None
  group: instancetype.kubevirt.io
  names:
    kind: VirtualMachineClusterPreference
    listKind: VirtualMachineClusterPreferenceList
    plural: virtualmachineclusterpreferences
    shortNames:
      - vmcp
      - vmcps
    singular: virtualmachineclusterpreference
  scope: Cluster
  versions:
    - deprecated: true
      deprecationWarning: instancetype.kubevirt.io/v1alpha1 VirtualMachineClusterPreferences is now deprecated and will be removed in v1.
      name: v1alpha1
      schema:
        openAPIV3Schema:
          description: VirtualMachineClusterPreference is a cluster scoped version of the VirtualMachinePreference resource.
          properties:
            apiVersion:
              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
              type: string
            kind:
              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              description: Required spec describing the preferences
              properties:
                clock:
                  description: Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredClockOffset:
                      description: ClockOffset allows specifying the UTC offset or the timezone of the guest clock.
                      properties:
                        timezone:
                          description: Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').
                          type: string
                        utc:
                          description: UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.
                          properties:
                            offsetSeconds:
                              description: OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.
                              type: integer
                          type: object
                      type: object
                    preferredTimer:
                      description: Timer specifies whih timers are attached to the vmi.
                      properties:
                        hpet:
                          description: HPET (High Precision Event Timer) - multiple timers with periodic interrupts.
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                            tickPolicy:
                              description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup", "merge", "discard".
                              type: string
                          type: object
                        hyperv:
                          description: Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                          type: object
                        kvm:
                          description: "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests."
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                          type: object
                        pit:
                          description: PIT (Programmable Interval Timer) - a timer with periodic interrupts.
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                            tickPolicy:
                              description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup", "discard".
                              type: string
                          type: object
                        rtc:
                          description: RTC (Real Time Clock) - a continuously running timer with periodic interrupts.
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                            tickPolicy:
                              description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup".
                              type: string
                            track:
                              description: Track the guest or the wall clock.
                              type: string
                          type: object
                      type: object
                  type: object
                cpu:
                  description: CPU optionally defines preferences associated with the CPU attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredCPUFeatures:
                      description: PreferredCPUFeatures optionally defines a slice of preferred CPU features.
                      items:
                        description: CPUFeature allows specifying a CPU feature.
                        properties:
                          name:
                            description: Name of the CPU feature
                            type: string
                          policy:
                            description: 'Policy is the CPU feature attribute which can have the following attributes: force    - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require  - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable  - The feature will not be supported by virtual CPU. forbid   - Guest creation will fail if the feature is supported by host CPU. Defaults to require'
                            type: string
                        required:
                          - name
                        type: object
                      type: array
                    preferredCPUTopology:
                      description: PreferredCPUTopology optionally defines the preferred guest visible CPU topology, defaults to PreferSockets.
                      type: string
                  type: object
                devices:
                  description: Devices optionally defines preferences associated with the Devices attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredAutoattachGraphicsDevice:
                      description: PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice
                      type: boolean
                    preferredAutoattachInputDevice:
                      description: PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice
                      type: boolean
                    preferredAutoattachMemBalloon:
                      description: PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon
                      type: boolean
                    preferredAutoattachPodInterface:
                      description: PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface
                      type: boolean
                    preferredAutoattachSerialConsole:
                      description: PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole
                      type: boolean
                    preferredBlockMultiQueue:
                      description: PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.
                      type: boolean
                    preferredCdromBus:
                      description: PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.
                      type: string
                    preferredDisableHotplug:
                      description: PreferredDisableHotplug optionally defines the preferred value of DisableHotplug
                      type: boolean
                    preferredDiskBlockSize:
                      description: PreferredBlockSize optionally defines the block size of Disk devices.
                      properties:
                        custom:
                          description: CustomBlockSize represents the desired logical and physical block size for a VM disk.
                          properties:
                            logical:
                              type: integer
                            physical:
                              type: integer
                          required:
                            - logical
                            - physical
                          type: object
                        matchVolume:
                          description: Represents if a feature is enabled or disabled.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                      type: object
                    preferredDiskBus:
                      description: PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.
                      type: string
                    preferredDiskCache:
                      description: PreferredCache optionally defines the DriverCache to be used by Disk devices.
                      type: string
                    preferredDiskDedicatedIoThread:
                      description: PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices.
                      type: boolean
                    preferredDiskIO:
                      description: PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.
                      type: string
                    preferredInputBus:
                      description: PreferredInputBus optionally defines the preferred bus for Input devices.
                      type: string
                    preferredInputType:
                      description: PreferredInputType optionally defines the preferred type for Input devices.
                      type: string
                    preferredInterfaceMasquerade:
                      description: PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.
                      type: object
                    preferredInterfaceModel:
                      description: PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.
                      type: string
                    preferredLunBus:
                      description: PreferredLunBus optionally defines the preferred bus for Lun Disk devices.
                      type: string
                    preferredNetworkInterfaceMultiQueue:
                      description: PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.
                      type: boolean
                    preferredRng:
                      description: PreferredRng optionally defines the preferred rng device to be used.
                      type: object
                    preferredSoundModel:
                      description: PreferredSoundModel optionally defines the preferred model for Sound devices.
                      type: string
                    preferredTPM:
                      description: PreferredTPM optionally defines the preferred TPM device to be used.
                      properties:
                        persistent:
                          description: Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false
                          type: boolean
                      type: object
                    preferredUseVirtioTransitional:
                      description: PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional
                      type: boolean
                    preferredVirtualGPUOptions:
                      description: PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions
                      properties:
                        display:
                          properties:
                            enabled:
                              description: Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                            ramFB:
                              description: Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.
                              properties:
                                enabled:
                                  description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                                  type: boolean
                              type: object
                          type: object
                      type: object
                  type: object
                features:
                  description: Features optionally defines preferences associated with the Features attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredAcpi:
                      description: PreferredAcpi optionally enables the ACPI feature
                      properties:
                        enabled:
                          description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                          type: boolean
                      type: object
                    preferredApic:
                      description: PreferredApic optionally enables and configures the APIC feature
                      properties:
                        enabled:
                          description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                          type: boolean
                        endOfInterrupt:
                          description: EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.
                          type: boolean
                      type: object
                    preferredHyperv:
                      description: PreferredHyperv optionally enables and configures HyperV features
                      properties:
                        evmcs:
                          description: EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        frequencies:
                          description: Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        ipi:
                          description: IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        reenlightenment:
                          description: Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        relaxed:
                          description: Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        reset:
                          description: Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        runtime:
                          description: Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        spinlocks:
                          description: Spinlocks allows to configure the spinlock retry attempts.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                            spinlocks:
                              description: Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.
                              format: int32
                              type: integer
                          type: object
                        synic:
                          description: SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        synictimer:
                          description: SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.
                          properties:
                            direct:
                              description: Represents if a feature is enabled or disabled.
                              properties:
                                enabled:
                                  description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                                  type: boolean
                              type: object
                            enabled:
                              type: boolean
                          type: object
                        tlbflush:
                          description: TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        vapic:
                          description: VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        vendorid:
                          description: VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                            vendorid:
                              description: VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.
                              type: string
                          type: object
                        vpindex:
                          description: VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                      type: object
                    preferredKvm:
                      description: PreferredKvm optionally enables and configures KVM features
                      properties:
                        hidden:
                          description: Hide the KVM hypervisor from standard MSR based discovery. Defaults to false
                          type: boolean
                      type: object
                    preferredPvspinlock:
                      description: PreferredPvspinlock optionally enables the Pvspinlock feature
                      properties:
                        enabled:
                          description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                          type: boolean
                      type: object
                    preferredSmm:
                      description: PreferredSmm optionally enables the SMM feature
                      properties:
                        enabled:
                          description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                          type: boolean
                      type: object
                  type: object
                firmware:
                  description: Firmware optionally defines preferences associated with the Firmware attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredUseBios:
                      description: PreferredUseBios optionally enables BIOS
                      type: boolean
                    preferredUseBiosSerial:
                      description: "PreferredUseBiosSerial optionally transmitts BIOS output over the serial. \n Requires PreferredUseBios to be enabled."
                      type: boolean
                    preferredUseEfi:
                      description: PreferredUseEfi optionally enables EFI
                      type: boolean
                    preferredUseSecureBoot:
                      description: "PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones. \n Requires PreferredUseEfi and PreferredSmm to be enabled."
                      type: boolean
                  type: object
                machine:
                  description: Machine optionally defines preferences associated with the Machine attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredMachineType:
                      description: PreferredMachineType optionally defines the preferred machine type to use.
                      type: string
                  type: object
                preferredSubdomain:
                  description: Subdomain of the VirtualMachineInstance
                  type: string
                preferredTerminationGracePeriodSeconds:
                  description: Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.
                  format: int64
                  type: integer
                requirements:
                  description: Requirements defines the minium amount of instance type defined resources required by a set of preferences
                  properties:
                    cpu:
                      description: Required CPU related attributes of the instancetype.
                      properties:
                        guest:
                          description: Minimal number of vCPUs required by the preference.
                          format: int32
                          type: integer
                      required:
                        - guest
                      type: object
                    memory:
                      description: Required Memory related attributes of the instancetype.
                      properties:
                        guest:
                          anyOf:
                            - type: integer
                            - type: string
                          description: Minimal amount of memory required by the preference.
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                      required:
                        - guest
                      type: object
                  type: object
                volumes:
                  description: Volumes optionally defines preferences associated with the Volumes attribute of a VirtualMachineInstace DomainSpec
                  properties:
                    preferredStorageClassName:
                      description: PreffereedStorageClassName optionally defines the preferred storageClass
                      type: string
                  type: object
              type: object
          required:
            - spec
          type: object
      served: true
      storage: false
    - deprecated: true
      deprecationWarning: instancetype.kubevirt.io/v1alpha2 VirtualMachineClusterPreferences is now deprecated and will be removed in v1.
      name: v1alpha2
      schema:
        openAPIV3Schema:
          description: VirtualMachineClusterPreference is a cluster scoped version of the VirtualMachinePreference resource.
          properties:
            apiVersion:
              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
              type: string
            kind:
              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              description: Required spec describing the preferences
              properties:
                clock:
                  description: Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredClockOffset:
                      description: ClockOffset allows specifying the UTC offset or the timezone of the guest clock.
                      properties:
                        timezone:
                          description: Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').
                          type: string
                        utc:
                          description: UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.
                          properties:
                            offsetSeconds:
                              description: OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.
                              type: integer
                          type: object
                      type: object
                    preferredTimer:
                      description: Timer specifies whih timers are attached to the vmi.
                      properties:
                        hpet:
                          description: HPET (High Precision Event Timer) - multiple timers with periodic interrupts.
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                            tickPolicy:
                              description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup", "merge", "discard".
                              type: string
                          type: object
                        hyperv:
                          description: Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                          type: object
                        kvm:
                          description: "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests."
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                          type: object
                        pit:
                          description: PIT (Programmable Interval Timer) - a timer with periodic interrupts.
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                            tickPolicy:
                              description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup", "discard".
                              type: string
                          type: object
                        rtc:
                          description: RTC (Real Time Clock) - a continuously running timer with periodic interrupts.
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                            tickPolicy:
                              description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup".
                              type: string
                            track:
                              description: Track the guest or the wall clock.
                              type: string
                          type: object
                      type: object
                  type: object
                cpu:
                  description: CPU optionally defines preferences associated with the CPU attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredCPUFeatures:
                      description: PreferredCPUFeatures optionally defines a slice of preferred CPU features.
                      items:
                        description: CPUFeature allows specifying a CPU feature.
                        properties:
                          name:
                            description: Name of the CPU feature
                            type: string
                          policy:
                            description: 'Policy is the CPU feature attribute which can have the following attributes: force    - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require  - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable  - The feature will not be supported by virtual CPU. forbid   - Guest creation will fail if the feature is supported by host CPU. Defaults to require'
                            type: string
                        required:
                          - name
                        type: object
                      type: array
                    preferredCPUTopology:
                      description: PreferredCPUTopology optionally defines the preferred guest visible CPU topology, defaults to PreferSockets.
                      type: string
                  type: object
                devices:
                  description: Devices optionally defines preferences associated with the Devices attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredAutoattachGraphicsDevice:
                      description: PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice
                      type: boolean
                    preferredAutoattachInputDevice:
                      description: PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice
                      type: boolean
                    preferredAutoattachMemBalloon:
                      description: PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon
                      type: boolean
                    preferredAutoattachPodInterface:
                      description: PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface
                      type: boolean
                    preferredAutoattachSerialConsole:
                      description: PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole
                      type: boolean
                    preferredBlockMultiQueue:
                      description: PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.
                      type: boolean
                    preferredCdromBus:
                      description: PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.
                      type: string
                    preferredDisableHotplug:
                      description: PreferredDisableHotplug optionally defines the preferred value of DisableHotplug
                      type: boolean
                    preferredDiskBlockSize:
                      description: PreferredBlockSize optionally defines the block size of Disk devices.
                      properties:
                        custom:
                          description: CustomBlockSize represents the desired logical and physical block size for a VM disk.
                          properties:
                            logical:
                              type: integer
                            physical:
                              type: integer
                          required:
                            - logical
                            - physical
                          type: object
                        matchVolume:
                          description: Represents if a feature is enabled or disabled.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                      type: object
                    preferredDiskBus:
                      description: PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.
                      type: string
                    preferredDiskCache:
                      description: PreferredCache optionally defines the DriverCache to be used by Disk devices.
                      type: string
                    preferredDiskDedicatedIoThread:
                      description: PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices.
                      type: boolean
                    preferredDiskIO:
                      description: PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.
                      type: string
                    preferredInputBus:
                      description: PreferredInputBus optionally defines the preferred bus for Input devices.
                      type: string
                    preferredInputType:
                      description: PreferredInputType optionally defines the preferred type for Input devices.
                      type: string
                    preferredInterfaceMasquerade:
                      description: PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.
                      type: object
                    preferredInterfaceModel:
                      description: PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.
                      type: string
                    preferredLunBus:
                      description: PreferredLunBus optionally defines the preferred bus for Lun Disk devices.
                      type: string
                    preferredNetworkInterfaceMultiQueue:
                      description: PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.
                      type: boolean
                    preferredRng:
                      description: PreferredRng optionally defines the preferred rng device to be used.
                      type: object
                    preferredSoundModel:
                      description: PreferredSoundModel optionally defines the preferred model for Sound devices.
                      type: string
                    preferredTPM:
                      description: PreferredTPM optionally defines the preferred TPM device to be used.
                      properties:
                        persistent:
                          description: Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false
                          type: boolean
                      type: object
                    preferredUseVirtioTransitional:
                      description: PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional
                      type: boolean
                    preferredVirtualGPUOptions:
                      description: PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions
                      properties:
                        display:
                          properties:
                            enabled:
                              description: Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                            ramFB:
                              description: Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.
                              properties:
                                enabled:
                                  description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                                  type: boolean
                              type: object
                          type: object
                      type: object
                  type: object
                features:
                  description: Features optionally defines preferences associated with the Features attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredAcpi:
                      description: PreferredAcpi optionally enables the ACPI feature
                      properties:
                        enabled:
                          description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                          type: boolean
                      type: object
                    preferredApic:
                      description: PreferredApic optionally enables and configures the APIC feature
                      properties:
                        enabled:
                          description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                          type: boolean
                        endOfInterrupt:
                          description: EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.
                          type: boolean
                      type: object
                    preferredHyperv:
                      description: PreferredHyperv optionally enables and configures HyperV features
                      properties:
                        evmcs:
                          description: EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        frequencies:
                          description: Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        ipi:
                          description: IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        reenlightenment:
                          description: Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        relaxed:
                          description: Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        reset:
                          description: Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        runtime:
                          description: Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        spinlocks:
                          description: Spinlocks allows to configure the spinlock retry attempts.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                            spinlocks:
                              description: Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.
                              format: int32
                              type: integer
                          type: object
                        synic:
                          description: SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        synictimer:
                          description: SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.
                          properties:
                            direct:
                              description: Represents if a feature is enabled or disabled.
                              properties:
                                enabled:
                                  description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                                  type: boolean
                              type: object
                            enabled:
                              type: boolean
                          type: object
                        tlbflush:
                          description: TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        vapic:
                          description: VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        vendorid:
                          description: VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                            vendorid:
                              description: VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.
                              type: string
                          type: object
                        vpindex:
                          description: VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                      type: object
                    preferredKvm:
                      description: PreferredKvm optionally enables and configures KVM features
                      properties:
                        hidden:
                          description: Hide the KVM hypervisor from standard MSR based discovery. Defaults to false
                          type: boolean
                      type: object
                    preferredPvspinlock:
                      description: PreferredPvspinlock optionally enables the Pvspinlock feature
                      properties:
                        enabled:
                          description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                          type: boolean
                      type: object
                    preferredSmm:
                      description: PreferredSmm optionally enables the SMM feature
                      properties:
                        enabled:
                          description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                          type: boolean
                      type: object
                  type: object
                firmware:
                  description: Firmware optionally defines preferences associated with the Firmware attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredUseBios:
                      description: PreferredUseBios optionally enables BIOS
                      type: boolean
                    preferredUseBiosSerial:
                      description: "PreferredUseBiosSerial optionally transmitts BIOS output over the serial. \n Requires PreferredUseBios to be enabled."
                      type: boolean
                    preferredUseEfi:
                      description: PreferredUseEfi optionally enables EFI
                      type: boolean
                    preferredUseSecureBoot:
                      description: "PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones. \n Requires PreferredUseEfi and PreferredSmm to be enabled."
                      type: boolean
                  type: object
                machine:
                  description: Machine optionally defines preferences associated with the Machine attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredMachineType:
                      description: PreferredMachineType optionally defines the preferred machine type to use.
                      type: string
                  type: object
                preferredSubdomain:
                  description: Subdomain of the VirtualMachineInstance
                  type: string
                preferredTerminationGracePeriodSeconds:
                  description: Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.
                  format: int64
                  type: integer
                requirements:
                  description: Requirements defines the minium amount of instance type defined resources required by a set of preferences
                  properties:
                    cpu:
                      description: Required CPU related attributes of the instancetype.
                      properties:
                        guest:
                          description: Minimal number of vCPUs required by the preference.
                          format: int32
                          type: integer
                      required:
                        - guest
                      type: object
                    memory:
                      description: Required Memory related attributes of the instancetype.
                      properties:
                        guest:
                          anyOf:
                            - type: integer
                            - type: string
                          description: Minimal amount of memory required by the preference.
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                      required:
                        - guest
                      type: object
                  type: object
                volumes:
                  description: Volumes optionally defines preferences associated with the Volumes attribute of a VirtualMachineInstace DomainSpec
                  properties:
                    preferredStorageClassName:
                      description: PreffereedStorageClassName optionally defines the preferred storageClass
                      type: string
                  type: object
              type: object
          required:
            - spec
          type: object
      served: true
      storage: false
    - name: v1beta1
      schema:
        openAPIV3Schema:
          description: VirtualMachineClusterPreference is a cluster scoped version of the VirtualMachinePreference resource.
          properties:
            apiVersion:
              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
              type: string
            kind:
              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              description: Required spec describing the preferences
              properties:
                clock:
                  description: Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredClockOffset:
                      description: ClockOffset allows specifying the UTC offset or the timezone of the guest clock.
                      properties:
                        timezone:
                          description: Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').
                          type: string
                        utc:
                          description: UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.
                          properties:
                            offsetSeconds:
                              description: OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.
                              type: integer
                          type: object
                      type: object
                    preferredTimer:
                      description: Timer specifies whih timers are attached to the vmi.
                      properties:
                        hpet:
                          description: HPET (High Precision Event Timer) - multiple timers with periodic interrupts.
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                            tickPolicy:
                              description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup", "merge", "discard".
                              type: string
                          type: object
                        hyperv:
                          description: Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                          type: object
                        kvm:
                          description: "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests."
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                          type: object
                        pit:
                          description: PIT (Programmable Interval Timer) - a timer with periodic interrupts.
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                            tickPolicy:
                              description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup", "discard".
                              type: string
                          type: object
                        rtc:
                          description: RTC (Real Time Clock) - a continuously running timer with periodic interrupts.
                          properties:
                            present:
                              description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
                              type: boolean
                            tickPolicy:
                              description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup".
                              type: string
                            track:
                              description: Track the guest or the wall clock.
                              type: string
                          type: object
                      type: object
                  type: object
                cpu:
                  description: CPU optionally defines preferences associated with the CPU attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredCPUFeatures:
                      description: PreferredCPUFeatures optionally defines a slice of preferred CPU features.
                      items:
                        description: CPUFeature allows specifying a CPU feature.
                        properties:
                          name:
                            description: Name of the CPU feature
                            type: string
                          policy:
                            description: 'Policy is the CPU feature attribute which can have the following attributes: force    - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require  - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable  - The feature will not be supported by virtual CPU. forbid   - Guest creation will fail if the feature is supported by host CPU. Defaults to require'
                            type: string
                        required:
                          - name
                        type: object
                      type: array
                    preferredCPUTopology:
                      description: PreferredCPUTopology optionally defines the preferred guest visible CPU topology, defaults to PreferSockets.
                      type: string
                  type: object
                devices:
                  description: Devices optionally defines preferences associated with the Devices attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredAutoattachGraphicsDevice:
                      description: PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice
                      type: boolean
                    preferredAutoattachInputDevice:
                      description: PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice
                      type: boolean
                    preferredAutoattachMemBalloon:
                      description: PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon
                      type: boolean
                    preferredAutoattachPodInterface:
                      description: PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface
                      type: boolean
                    preferredAutoattachSerialConsole:
                      description: PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole
                      type: boolean
                    preferredBlockMultiQueue:
                      description: PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.
                      type: boolean
                    preferredCdromBus:
                      description: PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.
                      type: string
                    preferredDisableHotplug:
                      description: PreferredDisableHotplug optionally defines the preferred value of DisableHotplug
                      type: boolean
                    preferredDiskBlockSize:
                      description: PreferredBlockSize optionally defines the block size of Disk devices.
                      properties:
                        custom:
                          description: CustomBlockSize represents the desired logical and physical block size for a VM disk.
                          properties:
                            logical:
                              type: integer
                            physical:
                              type: integer
                          required:
                            - logical
                            - physical
                          type: object
                        matchVolume:
                          description: Represents if a feature is enabled or disabled.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                      type: object
                    preferredDiskBus:
                      description: PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.
                      type: string
                    preferredDiskCache:
                      description: PreferredCache optionally defines the DriverCache to be used by Disk devices.
                      type: string
                    preferredDiskDedicatedIoThread:
                      description: PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices.
                      type: boolean
                    preferredDiskIO:
                      description: PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.
                      type: string
                    preferredInputBus:
                      description: PreferredInputBus optionally defines the preferred bus for Input devices.
                      type: string
                    preferredInputType:
                      description: PreferredInputType optionally defines the preferred type for Input devices.
                      type: string
                    preferredInterfaceMasquerade:
                      description: PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.
                      type: object
                    preferredInterfaceModel:
                      description: PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.
                      type: string
                    preferredLunBus:
                      description: PreferredLunBus optionally defines the preferred bus for Lun Disk devices.
                      type: string
                    preferredNetworkInterfaceMultiQueue:
                      description: PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.
                      type: boolean
                    preferredRng:
                      description: PreferredRng optionally defines the preferred rng device to be used.
                      type: object
                    preferredSoundModel:
                      description: PreferredSoundModel optionally defines the preferred model for Sound devices.
                      type: string
                    preferredTPM:
                      description: PreferredTPM optionally defines the preferred TPM device to be used.
                      properties:
                        persistent:
                          description: Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false
                          type: boolean
                      type: object
                    preferredUseVirtioTransitional:
                      description: PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional
                      type: boolean
                    preferredVirtualGPUOptions:
                      description: PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions
                      properties:
                        display:
                          properties:
                            enabled:
                              description: Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                            ramFB:
                              description: Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.
                              properties:
                                enabled:
                                  description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                                  type: boolean
                              type: object
                          type: object
                      type: object
                  type: object
                features:
                  description: Features optionally defines preferences associated with the Features attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredAcpi:
                      description: PreferredAcpi optionally enables the ACPI feature
                      properties:
                        enabled:
                          description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                          type: boolean
                      type: object
                    preferredApic:
                      description: PreferredApic optionally enables and configures the APIC feature
                      properties:
                        enabled:
                          description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                          type: boolean
                        endOfInterrupt:
                          description: EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.
                          type: boolean
                      type: object
                    preferredHyperv:
                      description: PreferredHyperv optionally enables and configures HyperV features
                      properties:
                        evmcs:
                          description: EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        frequencies:
                          description: Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        ipi:
                          description: IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        reenlightenment:
                          description: Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        relaxed:
                          description: Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        reset:
                          description: Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        runtime:
                          description: Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        spinlocks:
                          description: Spinlocks allows to configure the spinlock retry attempts.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                            spinlocks:
                              description: Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.
                              format: int32
                              type: integer
                          type: object
                        synic:
                          description: SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        synictimer:
                          description: SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.
                          properties:
                            direct:
                              description: Represents if a feature is enabled or disabled.
                              properties:
                                enabled:
                                  description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                                  type: boolean
                              type: object
                            enabled:
                              type: boolean
                          type: object
                        tlbflush:
                          description: TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        vapic:
                          description: VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                        vendorid:
                          description: VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                            vendorid:
                              description: VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.
                              type: string
                          type: object
                        vpindex:
                          description: VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.
                          properties:
                            enabled:
                              description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                              type: boolean
                          type: object
                      type: object
                    preferredKvm:
                      description: PreferredKvm optionally enables and configures KVM features
                      properties:
                        hidden:
                          description: Hide the KVM hypervisor from standard MSR based discovery. Defaults to false
                          type: boolean
                      type: object
                    preferredPvspinlock:
                      description: PreferredPvspinlock optionally enables the Pvspinlock feature
                      properties:
                        enabled:
                          description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                          type: boolean
                      type: object
                    preferredSmm:
                      description: PreferredSmm optionally enables the SMM feature
                      properties:
                        enabled:
                          description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
                          type: boolean
                      type: object
                  type: object
                firmware:
                  description: Firmware optionally defines preferences associated with the Firmware attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredUseBios:
                      description: PreferredUseBios optionally enables BIOS
                      type: boolean
                    preferredUseBiosSerial:
                      description: "PreferredUseBiosSerial optionally transmitts BIOS output over the serial. \n Requires PreferredUseBios to be enabled."
                      type: boolean
                    preferredUseEfi:
                      description: PreferredUseEfi optionally enables EFI
                      type: boolean
                    preferredUseSecureBoot:
                      description: "PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones. \n Requires PreferredUseEfi and PreferredSmm to be enabled."
                      type: boolean
                  type: object
                machine:
                  description: Machine optionally defines preferences associated with the Machine attribute of a VirtualMachineInstance DomainSpec
                  properties:
                    preferredMachineType:
                      description: PreferredMachineType optionally defines the preferred machine type to use.
                      type: string
                  type: object
                preferredSubdomain:
                  description: Subdomain of the VirtualMachineInstance
                  type: string
                preferredTerminationGracePeriodSeconds:
                  description: Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.
                  format: int64
                  type: integer
                requirements:
                  description: Requirements defines the minium amount of instance type defined resources required by a set of preferences
                  properties:
                    cpu:
                      description: Required CPU related attributes of the instancetype.
                      properties:
                        guest:
                          description: Minimal number of vCPUs required by the preference.
                          format: int32
                          type: integer
                      required:
                        - guest
                      type: object
                    memory:
                      description: Required Memory related attributes of the instancetype.
                      properties:
                        guest:
                          anyOf:
                            - type: integer
                            - type: string
                          description: Minimal amount of memory required by the preference.
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                      required:
                        - guest
                      type: object
                  type: object
                volumes:
                  description: Volumes optionally defines preferences associated with the Volumes attribute of a VirtualMachineInstace DomainSpec
                  properties:
                    preferredStorageClassName:
                      description: PreffereedStorageClassName optionally defines the preferred storageClass
                      type: string
                  type: object
              type: object
          required:
            - spec
          type: object
      served: true
      storage: true