Product SiteDocumentation Site

Chapter 7. Capabilities

7.1. Version-Dependent Capabilities
7.1.1. Current Version
7.1.2. Features
7.1.3. CPUs
7.1.4. Power Managers
7.1.5. Fence Types
7.1.6. Storage Types
7.1.7. Storage Domain Types
7.1.8. Virtual Machine Types
7.1.9. Boot Devices
7.1.10. Display Types
7.1.11. NIC Types
7.1.12. Disk Types
7.1.13. Disk Formats
7.1.14. Disk Interfaces
7.1.15. Virtual Machine Affinities
7.1.16. Custom Properties
7.1.17. Boot Protocols
7.1.18. Error Handling
7.1.19. Storage Formats
7.2. Permits
7.3. Scheduling Policies
7.4. Capabilities Example
The capabilities collection provides information about the supported capabilities of a Red Hat Enterprise Virtualization Manager. These capabilities include active features and available enumerated values for specific properties. An API user accesses this information through the rel="capabilities" link obtained from the entry point URI (see Chapter 4, Entry Point).

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 version element includes attributes for major and minor version numbers. This indicates the current version level, which this document discusses in Chapter 6, Compatibility Level Versions.
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:
Capability Element Description
current Signifies if this version most recent supported compatibility level
features The list of features the version supports.
cpus List of supported CPU types.
power_managers List of supported fence agents and their configuration options.
fence_types Supported fence actions for hosts
storage_types Supported storage types for a version
storage_domain_types List of all domain types
vm_types List of all virtual machine types
boot_devices Boot devices for a virtual machine
display_types Available display protocols for a virtual machine
nic_types Network interface types for a virtual machine
disk_types List of storage device types
disk_formats List of storage device formats
disk_interfaces List of interfaces for storage devices
vm_affinities Affinities for a host's placement policy
custom_properties Environment variables for a virtual machine's custom scripts
boot_protocols List of available protocols for IP assignment
error_handling Options to determine virtual machine handling when a host in a cluster becomes non-operational
storage_formats The format versions for storage meta-data

7.1.1. Current Version

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>

7.1.2. Features

Each version contains a list of compatible features.
Feature Element Type Description
transparent_hugepages boolean: true or false Defines the availablity of Transparent Hugepages for hosts
<capabilities>
    <version major="3" minor="0">
	      ...
        <features>
            <transparent_hugepages>true</transparent_hugepages>
        </features>
        ...
    </version>
</capabilities>

7.1.3. CPUs

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:
Element Description
id An opaque identifier for the CPU model
level An indication as to the relative priority/preference for the CPUs in the list. Higher is better
<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>

7.1.4. Power Managers

Red Hat Enterprise Virtualization platform provides a list of supported power_managers for host fencing configuration. Each power_management option contains the following properties:
Element Description
type The supported fencing device type
options A list of options available to the supported fencing device. Options include a name and a value type.
<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>

7.1.5. Fence Types

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>

7.1.6. Storage Types

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>

7.1.9. Boot Devices

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>

7.1.10. Display Types

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>

7.1.11. NIC Types

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>

7.1.12. Disk Types

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>

7.1.13. Disk Formats

An API user selects the format for virtual disks. The disk_formats element defines the format types. The disk_format types include pre-allocated (raw) or thin-provisioned (Copy-On-Write or cow).
<capabilities>
    <version major="3" minor="0">
	      ...
        <disk_formats>
            <disk_format>cow</disk_format>
            <disk_format>raw</disk_format>
        </disk_formats>
        ...
    </version>
</capabilities>

7.1.14. Disk Interfaces

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>

7.1.17. Boot Protocols

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>

7.1.18. Error Handling

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>

7.1.19. Storage Formats

The storage_formats element lists the available format versions for storage meta-data.
<capabilities>
    <version major="3" minor="0">
	      ...
        <storage_formats>
            <format>v1</format>
            <format>v2</format>
        </storage_formats>
        ...
    </version>
</capabilities>