{
  "description": "VirtualMachinePreference resource contains optional preferences related to the VirtualMachine.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore 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.\nZone 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,\nguest 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,\nguest changes to the clock will be kept during reboots and not reset.",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "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.\nDefaults to true.",
                      "type": "boolean"
                    },
                    "tickPolicy": {
                      "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest.\nOne of \"delay\", \"catchup\", \"merge\", \"discard\".",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "hyperv": {
                  "description": "Hyperv (Hypervclock) - lets guests read the host\u2019s 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.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "kvm": {
                  "description": "KVM \t(KVM clock) - lets guests read the host\u2019s 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.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "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.\nDefaults to true.",
                      "type": "boolean"
                    },
                    "tickPolicy": {
                      "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest.\nOne of \"delay\", \"catchup\", \"discard\".",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "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.\nDefaults to true.",
                      "type": "boolean"
                    },
                    "tickPolicy": {
                      "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest.\nOne of \"delay\", \"catchup\".",
                      "type": "string"
                    },
                    "track": {
                      "description": "Track the guest or the wall clock.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "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:\nforce    - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU.\nrequire  - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it.\noptional - The feature will be supported by virtual CPU if and only if it is supported by host CPU.\ndisable  - The feature will not be supported by virtual CPU.\nforbid   - Guest creation will fail if the feature is supported by host CPU.\nDefaults to require",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "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.\nDefault: SocketsCores",
                  "type": "string"
                },
                "ratio": {
                  "description": "Ratio optionally defines the ratio to spread vCPUs across the guest visible topology:\n\nCoresThreads        - 1:2   - Controls the ratio of cores to threads. Only a ratio of 2 is currently accepted.\nSocketsCores        - 1:N   - Controls the ratio of socket to cores.\nSocketsCoresThreads - 1:N:2 - Controls the ratio of socket to cores. Each core providing 2 threads.\n\nDefault: 2",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "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": {
                    "discardGranularity": {
                      "type": "integer"
                    },
                    "logical": {
                      "type": "integer"
                    },
                    "physical": {
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "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.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "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"
            },
            "preferredPanicDeviceModel": {
              "description": "PreferredPanicDeviceModel optionally defines the preferred panic device model to use with panic devices.",
              "type": "string"
            },
            "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 explicitly disable the vTPM even when one is enabled by a preference referenced by the VirtualMachine\nDefaults to True",
                  "type": "boolean"
                },
                "persistent": {
                  "description": "Persistent indicates the state of the TPM device should be kept accross reboots\nDefaults to false",
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "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.\nDefaults to true.",
                      "type": "boolean"
                    },
                    "ramFB": {
                      "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver\nDefaults to true.",
                      "properties": {
                        "enabled": {
                          "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                          "type": "boolean"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "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.\nDefaults to true.",
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "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.\nDefaults to true.",
                  "type": "boolean"
                },
                "endOfInterrupt": {
                  "description": "EndOfInterrupt enables the end of interrupt notification in the guest.\nDefaults to false.",
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "preferredHyperv": {
              "description": "PreferredHyperv optionally enables and configures HyperV features",
              "properties": {
                "evmcs": {
                  "description": "EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic.\nDefaults to the machine type setting.",
                  "properties": {
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "frequencies": {
                  "description": "Frequencies improves the TSC clock source handling for Hyper-V on KVM.\nDefaults to the machine type setting.",
                  "properties": {
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "ipi": {
                  "description": "IPI improves performances in overcommited environments. Requires vpindex.\nDefaults to the machine type setting.",
                  "properties": {
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "reenlightenment": {
                  "description": "Reenlightenment enables the notifications on TSC frequency changes.\nDefaults to the machine type setting.",
                  "properties": {
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "relaxed": {
                  "description": "Relaxed instructs the guest OS to disable watchdog timeouts.\nDefaults to the machine type setting.",
                  "properties": {
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "reset": {
                  "description": "Reset enables Hyperv reboot/reset for the vmi. Requires synic.\nDefaults to the machine type setting.",
                  "properties": {
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "runtime": {
                  "description": "Runtime improves the time accounting to improve scheduling in the guest.\nDefaults to the machine type setting.",
                  "properties": {
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "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.\nDefaults to true.",
                      "type": "boolean"
                    },
                    "spinlocks": {
                      "description": "Retries indicates the number of retries.\nMust be a value greater or equal 4096.\nDefaults to 4096.",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "synic": {
                  "description": "SyNIC enables the Synthetic Interrupt Controller.\nDefaults to the machine type setting.",
                  "properties": {
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "synictimer": {
                  "description": "SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load.\nDefaults 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.\nDefaults to true.",
                          "type": "boolean"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "tlbflush": {
                  "description": "TLBFlush improves performances in overcommited environments. Requires vpindex.\nDefaults to the machine type setting.",
                  "properties": {
                    "direct": {
                      "description": "Direct allows sending the TLB flush command directly to the hypervisor.\nIt can be useful to optimize performance in nested virtualization cases, such as Windows VBS.",
                      "properties": {
                        "enabled": {
                          "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                          "type": "boolean"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    },
                    "extended": {
                      "description": "Extended allows the guest to execute partial TLB flushes. It can be helpful for general purpose workloads.",
                      "properties": {
                        "enabled": {
                          "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                          "type": "boolean"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "vapic": {
                  "description": "VAPIC improves the paravirtualized handling of interrupts.\nDefaults to the machine type setting.",
                  "properties": {
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "vendorid": {
                  "description": "VendorID allows setting the hypervisor vendor id.\nDefaults to the machine type setting.",
                  "properties": {
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    },
                    "vendorid": {
                      "description": "VendorID sets the hypervisor vendor id, visible to the vmi.\nString up to twelve characters.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "vpindex": {
                  "description": "VPIndex enables the Virtual Processor Index to help windows identifying virtual processors.\nDefaults to the machine type setting.",
                  "properties": {
                    "enabled": {
                      "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "preferredKvm": {
              "description": "PreferredKvm optionally enables and configures KVM features",
              "properties": {
                "hidden": {
                  "description": "Hide the KVM hypervisor from standard MSR based discovery.\nDefaults to false",
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "preferredPvspinlock": {
              "description": "PreferredPvspinlock optionally enables the Pvspinlock feature",
              "properties": {
                "enabled": {
                  "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "preferredSmm": {
              "description": "PreferredSmm optionally enables the SMM feature",
              "properties": {
                "enabled": {
                  "description": "Enabled determines if the feature should be enabled or disabled on the guest.\nDefaults to true.",
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "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.\nDefaults to false",
                  "type": "boolean"
                },
                "secureBoot": {
                  "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for\nSecureBoot-enabled ones.\nRequires SMM to be enabled.\nDefaults to true",
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "preferredUseBios": {
              "description": "PreferredUseBios optionally enables BIOS",
              "type": "boolean"
            },
            "preferredUseBiosSerial": {
              "description": "PreferredUseBiosSerial optionally transmitts BIOS output over the serial.\n\nRequires PreferredUseBios to be enabled.",
              "type": "boolean"
            },
            "preferredUseEfi": {
              "description": "PreferredUseEfi optionally enables EFI\n\nDeprecated: 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.\n\nRequires PreferredUseEfi and PreferredSmm to be enabled.\n\nDeprecated: Will be removed with v1beta2 or v1",
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "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",
          "additionalProperties": false
        },
        "preferSpreadSocketToCoreRatio": {
          "description": "PreferSpreadSocketToCoreRatio defines the ratio to spread vCPUs between cores and sockets, it defaults to 2.",
          "format": "int32",
          "type": "integer"
        },
        "preferredArchitecture": {
          "description": "PreferredArchitecture defines a prefeerred architecture for the VirtualMachine",
          "type": "string"
        },
        "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": {
            "architecture": {
              "description": "Required Architecture of the VM referencing this preference",
              "type": "string"
            },
            "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",
              "additionalProperties": false
            },
            "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",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "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",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
