---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    kubevirt.io/generation: "2"
    kubevirt.io/install-strategy-identifier: 2dc5f715e9a54162bc06e47f8e4f741a60504588
    kubevirt.io/install-strategy-registry: ""
    kubevirt.io/install-strategy-version: sha256:f3434d66f6d0d99c98a9c7428ed9a85c5c83bb9c1caeb1bc3617c37b2ad2ee81
  creationTimestamp: "2025-10-29T11:53:45Z"
  generation: 1
  labels:
    app.kubernetes.io/component: compute
    app.kubernetes.io/managed-by: virt-operator
    app.kubernetes.io/part-of: hyperconverged-cluster
    app.kubernetes.io/version: 4.19.11
    kubevirt.io: ""
  managedFields:
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:status:
        f:acceptedNames:
          f:categories: {}
          f:kind: {}
          f:listKind: {}
          f:plural: {}
          f:shortNames: {}
          f:singular: {}
        f:conditions:
          k:{"type":"Established"}:
            .: {}
            f:lastTransitionTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
          k:{"type":"NamesAccepted"}:
            .: {}
            f:lastTransitionTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
    manager: kube-apiserver
    operation: Update
    subresource: status
    time: "2025-10-29T11:53:45Z"
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:kubevirt.io/generation: {}
          f:kubevirt.io/install-strategy-identifier: {}
          f:kubevirt.io/install-strategy-registry: {}
          f:kubevirt.io/install-strategy-version: {}
        f:labels:
          .: {}
          f:app.kubernetes.io/component: {}
          f:app.kubernetes.io/managed-by: {}
          f:app.kubernetes.io/part-of: {}
          f:app.kubernetes.io/version: {}
          f:kubevirt.io: {}
      f:spec:
        f:conversion:
          .: {}
          f:strategy: {}
        f:group: {}
        f:names:
          f:categories: {}
          f:kind: {}
          f:listKind: {}
          f:plural: {}
          f:shortNames: {}
          f:singular: {}
        f:scope: {}
        f:versions: {}
    manager: virt-operator
    operation: Update
    time: "2025-10-29T11:53:45Z"
  name: virtualmachinepreferences.instancetype.kubevirt.io
  resourceVersion: "2145430"
  uid: 4f935e66-1d82-4bf1-8073-b50f07a3fdf4
spec:
  conversion:
    strategy: None
  group: instancetype.kubevirt.io
  names:
    categories:
    - all
    kind: VirtualMachinePreference
    listKind: VirtualMachinePreferenceList
    plural: virtualmachinepreferences
    shortNames:
    - vmpref
    - vmprefs
    - vmp
    - vmps
    singular: virtualmachinepreference
  scope: Namespaced
  versions:
  - deprecated: true
    deprecationWarning: instancetype.kubevirt.io/v1alpha1 VirtualMachinePreferences
      is now deprecated and will be removed in v1.
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: VirtualMachinePreference resource contains optional preferences
          related to the VirtualMachine.
        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:
              annotations:
                additionalProperties:
                  type: string
                description: Optionally defines preferred Annotations to be applied
                  to the VirtualMachineInstance
                type: object
              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
                  spreadOptions:
                    properties:
                      across:
                        description: |-
                          Across optionally defines how to spread vCPUs across the guest visible topology.
                          Default: SocketsCores
                        type: string
                      ratio:
                        description: |-
                          Ratio optionally defines the ratio to spread vCPUs across the guest visible topology:

                          CoresThreads        - 1:2   - Controls the ratio of cores to threads. Only a ratio of 2 is currently accepted.
                          SocketsCores        - 1:N   - Controls the ratio of socket to cores.
                          SocketsCoresThreads - 1:N:2 - Controls the ratio of socket to cores. Each core providing 2 threads.

                          Default: 2
                        format: int32
                        type: integer
                    type: object
                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 using the virtio bus.
                    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:
                      enabled:
                        description: |-
                          Enabled allows a user to explictly disable the vTPM even when one is enabled by a preference referenced by the VirtualMachine
                          Defaults to True
                        type: boolean
                      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:
                  preferredEfi:
                    description: PreferredEfi optionally enables EFI
                    properties:
                      persistent:
                        description: |-
                          If set to true, Persistent will persist the EFI NVRAM across reboots.
                          Defaults to false
                        type: boolean
                      secureBoot:
                        description: |-
                          If set, SecureBoot will be enabled and the OVMF roms will be swapped for
                          SecureBoot-enabled ones.
                          Requires SMM to be enabled.
                          Defaults to true
                        type: boolean
                    type: object
                  preferredUseBios:
                    description: PreferredUseBios optionally enables BIOS
                    type: boolean
                  preferredUseBiosSerial:
                    description: |-
                      PreferredUseBiosSerial optionally transmitts BIOS output over the serial.

                      Requires PreferredUseBios to be enabled.
                    type: boolean
                  preferredUseEfi:
                    description: |-
                      PreferredUseEfi optionally enables EFI

                      Deprecated: Will be removed with v1beta2 or v1
                    type: boolean
                  preferredUseSecureBoot:
                    description: |-
                      PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones.

                      Requires PreferredUseEfi and PreferredSmm to be enabled.

                      Deprecated: Will be removed with v1beta2 or v1
                    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
              preferSpreadSocketToCoreRatio:
                description: PreferSpreadSocketToCoreRatio defines the ratio to spread
                  vCPUs between cores and sockets, it defaults to 2.
                format: int32
                type: integer
              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 VirtualMachinePreferences
      is now deprecated and will be removed in v1.
    name: v1alpha2
    schema:
      openAPIV3Schema:
        description: VirtualMachinePreference resource contains optional preferences
          related to the VirtualMachine.
        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:
              annotations:
                additionalProperties:
                  type: string
                description: Optionally defines preferred Annotations to be applied
                  to the VirtualMachineInstance
                type: object
              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
                  spreadOptions:
                    properties:
                      across:
                        description: |-
                          Across optionally defines how to spread vCPUs across the guest visible topology.
                          Default: SocketsCores
                        type: string
                      ratio:
                        description: |-
                          Ratio optionally defines the ratio to spread vCPUs across the guest visible topology:

                          CoresThreads        - 1:2   - Controls the ratio of cores to threads. Only a ratio of 2 is currently accepted.
                          SocketsCores        - 1:N   - Controls the ratio of socket to cores.
                          SocketsCoresThreads - 1:N:2 - Controls the ratio of socket to cores. Each core providing 2 threads.

                          Default: 2
                        format: int32
                        type: integer
                    type: object
                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 using the virtio bus.
                    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:
                      enabled:
                        description: |-
                          Enabled allows a user to explictly disable the vTPM even when one is enabled by a preference referenced by the VirtualMachine
                          Defaults to True
                        type: boolean
                      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:
                  preferredEfi:
                    description: PreferredEfi optionally enables EFI
                    properties:
                      persistent:
                        description: |-
                          If set to true, Persistent will persist the EFI NVRAM across reboots.
                          Defaults to false
                        type: boolean
                      secureBoot:
                        description: |-
                          If set, SecureBoot will be enabled and the OVMF roms will be swapped for
                          SecureBoot-enabled ones.
                          Requires SMM to be enabled.
                          Defaults to true
                        type: boolean
                    type: object
                  preferredUseBios:
                    description: PreferredUseBios optionally enables BIOS
                    type: boolean
                  preferredUseBiosSerial:
                    description: |-
                      PreferredUseBiosSerial optionally transmitts BIOS output over the serial.

                      Requires PreferredUseBios to be enabled.
                    type: boolean
                  preferredUseEfi:
                    description: |-
                      PreferredUseEfi optionally enables EFI

                      Deprecated: Will be removed with v1beta2 or v1
                    type: boolean
                  preferredUseSecureBoot:
                    description: |-
                      PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones.

                      Requires PreferredUseEfi and PreferredSmm to be enabled.

                      Deprecated: Will be removed with v1beta2 or v1
                    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
              preferSpreadSocketToCoreRatio:
                description: PreferSpreadSocketToCoreRatio defines the ratio to spread
                  vCPUs between cores and sockets, it defaults to 2.
                format: int32
                type: integer
              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: VirtualMachinePreference resource contains optional preferences
          related to the VirtualMachine.
        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:
              annotations:
                additionalProperties:
                  type: string
                description: Optionally defines preferred Annotations to be applied
                  to the VirtualMachineInstance
                type: object
              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
                  spreadOptions:
                    properties:
                      across:
                        description: |-
                          Across optionally defines how to spread vCPUs across the guest visible topology.
                          Default: SocketsCores
                        type: string
                      ratio:
                        description: |-
                          Ratio optionally defines the ratio to spread vCPUs across the guest visible topology:

                          CoresThreads        - 1:2   - Controls the ratio of cores to threads. Only a ratio of 2 is currently accepted.
                          SocketsCores        - 1:N   - Controls the ratio of socket to cores.
                          SocketsCoresThreads - 1:N:2 - Controls the ratio of socket to cores. Each core providing 2 threads.

                          Default: 2
                        format: int32
                        type: integer
                    type: object
                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 using the virtio bus.
                    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:
                      enabled:
                        description: |-
                          Enabled allows a user to explictly disable the vTPM even when one is enabled by a preference referenced by the VirtualMachine
                          Defaults to True
                        type: boolean
                      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:
                  preferredEfi:
                    description: PreferredEfi optionally enables EFI
                    properties:
                      persistent:
                        description: |-
                          If set to true, Persistent will persist the EFI NVRAM across reboots.
                          Defaults to false
                        type: boolean
                      secureBoot:
                        description: |-
                          If set, SecureBoot will be enabled and the OVMF roms will be swapped for
                          SecureBoot-enabled ones.
                          Requires SMM to be enabled.
                          Defaults to true
                        type: boolean
                    type: object
                  preferredUseBios:
                    description: PreferredUseBios optionally enables BIOS
                    type: boolean
                  preferredUseBiosSerial:
                    description: |-
                      PreferredUseBiosSerial optionally transmitts BIOS output over the serial.

                      Requires PreferredUseBios to be enabled.
                    type: boolean
                  preferredUseEfi:
                    description: |-
                      PreferredUseEfi optionally enables EFI

                      Deprecated: Will be removed with v1beta2 or v1
                    type: boolean
                  preferredUseSecureBoot:
                    description: |-
                      PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones.

                      Requires PreferredUseEfi and PreferredSmm to be enabled.

                      Deprecated: Will be removed with v1beta2 or v1
                    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
              preferSpreadSocketToCoreRatio:
                description: PreferSpreadSocketToCoreRatio defines the ratio to spread
                  vCPUs between cores and sockets, it defaults to 2.
                format: int32
                type: integer
              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
status:
  acceptedNames:
    categories:
    - all
    kind: VirtualMachinePreference
    listKind: VirtualMachinePreferenceList
    plural: virtualmachinepreferences
    shortNames:
    - vmpref
    - vmprefs
    - vmp
    - vmps
    singular: virtualmachinepreference
  conditions:
  - lastTransitionTime: "2025-10-29T11:53:45Z"
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: "2025-10-29T11:53:45Z"
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  storedVersions:
  - v1beta1
