7.1. Version-Dependent Capabilities
			The capabilities element contains any number of version elements which describe capabilities that are dependent on a compatiblity level.
		
			The following representation shows capabilities specific to Red Hat Enterprise Virtualization Manager 3.0 and 2.2 respectively:
		
<capabilities>
    <version major="3" minor="0">
        ...
    </version>
    <version major="2" minor="2">
        ...
    </version>
    ...
</capabilities>
			Each version contains a series of capabilities dependent on the version specified. This includes:
		
				The current element signifies if the version specified is the most recent supported compatibility level. The value is either a boolean true or false.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <current>true</current>
        ...
    </version>
</capabilities>
				Each version contains a list of compatible features.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <features>
            <transparent_hugepages>true</transparent_hugepages>
        </features>
        ...
    </version>
</capabilities>
				Each cluster is configured with a minimal CPU type that all hosts in that cluster must support. Guests running on hosts within the cluster all run on this CPU type, ensuring that every guest can be live migrated to any host within the cluster.
			
				Red Hat Enterprise Virtualization has a set of supported CPU types to choose from when configuring a cluster. Each CPU has the following properties:
			
<capabilities>
    <version major="3" minor="0">
        ...
        <cpus>
            <cpu id="Intel Xeon w/o XD/NX">
                <level>2</level>
            </cpu>
            <cpu id="Intel Xeon">
                <level>3</level>
            </cpu>
            ...
        </cpus>
        ...
    </version>
</capabilities>
				Red Hat Enterprise Virtualization platform provides a list of supported power_managers for host fencing configuration. Each power_management option contains the following properties:
			
<capabilities>
    <version major="3" minor="0">
        ...
        <power_managers>
            <power_management type="alom">
                <options>
                    <option type="bool" name="secure"/>
                    <option type="int" name="port"/>
                </options>
            </power_management>
            <power_management type="apc">
                <options>
                    <option type="bool" name="secure"/>
                    <option type="int" name="port"/>
                    <option type="int" name="slot"/>
                </options>
            </power_management>
            <power_management type="bladecenter">
                <options>
                    <option type="bool" name="secure"/>
                    <option type="int" name="port"/>
                    <option type="int" name="slot"/>
                </options>
            </power_management>
            ...
        </power_managers>
        ...
    </version>
</capabilities>
				The fence_types element defines fence_type options to fence a troublesome host and reduce power usage.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <fence_types>
            <fence_type>manual</fence_type>
            <fence_type>restart</fence_type>
            <fence_type>start</fence_type>
            <fence_type>stop</fence_type>
            <fence_type>status</fence_type>
        </fence_types>
        ...
    </version>
</capabilities>
				The storage_types element defines the available physical storage_type options.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <storage_types>
            <storage_type>iscsi</storage_type>
            <storage_type>fcp</storage_type>
            <storage_type>nfs</storage_type>
            <storage_type>local</storage_type>
        </storage_types>
        ...
    </version>
</capabilities>
7.1.7. Storage Domain Types
				The storage_domain_types element shows the available storage_domain_type options a user creates in a virtualization environment.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <storage_domain_types>
            <storage_domain_type>data</storage_domain_type>
            <storage_domain_type>iso</storage_domain_type>         
            <storage_domain_type>export</storage_domain_type>          
        </storage_domain_types>
        ...
    </version>
</capabilities>
7.1.8. Virtual Machine Types
				The vm_types element defines each virtual machine type (vm_type) available for creation in a virtual environment.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <vm_types>
            <vm_type>desktop</vm_type>
            <vm_type>server</vm_type>
        </vm_types>
        ...
    </version>
</capabilities>
				Each virtual machine boots from a selected device. The boot_devices element lists such boot_device options.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <boot_devices>
            <boot_device>cdrom</boot_device>
            <boot_device>hd</boot_device>
            <boot_device>network</boot_device>
        </boot_devices>
        ...
    </version>
</capabilities>
				Access to a virtual machine through Red Hat Enterprise Virtualization Manager requires a display protocol. The display_types element lists each display_type protocol.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <display_types>
            <display_type>vnc</display_type>
            <display_type>spice</display_type>
        </display_types>
        ...
    </version>
</capabilities>
				A virtual machine requires a network interface to connect to a network. The nic_types element defines the supported NIC types available. Each nic_type depends on the drivers available for different types of virtual machines. VirtIO drivers are available for Red Hat Enterprise Linux 4.8 and above, and for Windows virtual machines. Windows supports rtl8139 without the need for drivers. Other Linux machines, or earlier versions of Red Hat Enterprise Linux, use e1000 or rtl8139.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <nic_types>
            <nic_type>e1000</nic_type>
            <nic_type>virtio</nic_type>
            <nic_type>rtl8139</nic_type>
            <nic_type>rtl8139_virtio</nic_type>
        </nic_types>
        ...
    </version>
</capabilities>
				Each virtual machine requires a virtual disk for storage. The disk_types element lists the available virtual disk_type options.
			
<capabilities>
    <version major="3" minor="0">
	      ...
	      <disk_types>
            <disk_type>data</disk_type>
            <disk_type>shared</disk_type>
            <disk_type>swap</disk_type>
            <disk_type>system</disk_type>
            <disk_type>temp</disk_type>
        <disk_types
        ...
    </version>
</capabilities>
				The disk_interfaces element lists disk_interface options for emulated protocols to interface with virtual disks.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <disk_interfaces>
            <disk_interface>ide</disk_interface>
            <disk_interface>scsi</disk_interface>
            <disk_interface>virtio</disk_interface>
        </disk_interfaces>
        ...
    </version>
</capabilities>
7.1.15. Virtual Machine Affinities
				Virtual machines migrate between hosts in a cluster. The vm_affinities element defines each available migration affinity for virtual machines.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <vm_affinities>
            <affinity>migratable</affinity>
            <affinity>user_migratable</affinity>
            <affinity>pinned</affinity>
        </vm_affinities>
        ...
    </version>
</capabilities>
7.1.16. Custom Properties
				The custom_properties element lists a set of environment variables for a virtual environment. The virtual environment uses these variables as parameters for event-triggered VDSM scripts. Each custom_property includes attributes for a property name and a regular expression (regexp) to define the format of the property value.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <custom_properties>
            <custom_property name="sap_agent" regexp="^(true|false)$"/>
            <custom_property name="sndbuf" regexp="^[0-9]+$"/>
            <custom_property name="vhost"
              regexp="^(([a-zA-Z0-9_]*):(true|false))(,(([a-zA-Z0-9_]*):(true|false)))*$"/>
            <custom_property name="viodiskcache"
              regexp="^(none|writeback|writethrough)$"/>
        </custom_properties>
        ...
    </version>
</capabilities>
				The boot_protocol element lists each possible IP assignment boot_protocol for hosts when booting.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <boot_protocols>
            <boot_protocol>dhcp</boot_protocol>
            <boot_protocol>static</boot_protocol>
        </boot_protocols>
        ...
    </version>
</capabilities>
				A Red Hat Enterprise Virtualization Manager determines whether to migrate virtual machines on a non-operational host using one of the on_error options the in the error_handling element.
			
<capabilities>
    <version major="3" minor="0">
	      ...
        <error_handling>
            <on_error>migrate</on_error>
            <on_error>do_not_migrate</on_error>
            <on_error>migrate_highly_available</on_error>
        </error_handling>
        ...
    </version>
</capabilities>