# Image Properties

This page describes the various properties that are supported by <code class="expression">space.vars.product\_name</code> images.&#x20;

### architecture

**Property**: `architecture`

**Type**: string&#x20;

**Description**:

The CPU architecture that must be supported by the hypervisor. For example, `x86_64`, `arm`, or `ppc64`. Run **uname -m** to get the architecture of a machine. We strongly recommend using the architecture data vocabulary defined by the [libosinfo project](http://libosinfo.org/) for this purpose.

**Supported values:**

* `aarch64` - [ARM 64-bit](https://en.wikipedia.org/wiki/AArch64)
* `alpha` - [DEC 64-bit RISC](https://en.wikipedia.org/wiki/DEC_Alpha)
* `armv7l` - [ARM Cortex-A7 MPCore](https://en.wikipedia.org/wiki/ARM_architecture)
* `cris` - [Ethernet, Token Ring, AXis—Code Reduced Instruction Set](https://en.wikipedia.org/wiki/ETRAX_CRIS)
* `i686` - [Intel sixth-generation x86 (P6 micro architecture)](https://en.wikipedia.org/wiki/X86)
* `ia64` - [Itanium](https://en.wikipedia.org/wiki/Itanium)
* `lm32` - [Lattice Micro32](https://en.wikipedia.org/wiki/Milkymist)
* `m68k` - [Motorola 68000](https://en.wikipedia.org/wiki/Motorola_68000_family)
* `microblaze` - [Xilinx 32-bit FPGA (Big Endian)](https://en.wikipedia.org/wiki/MicroBlaze)
* `microblazeel` - [Xilinx 32-bit FPGA (Little Endian)](https://en.wikipedia.org/wiki/MicroBlaze)
* `mips` - [MIPS 32-bit RISC (Big Endian)](https://en.wikipedia.org/wiki/MIPS_architecture)
* `mipsel` - [MIPS 32-bit RISC (Little Endian)](https://en.wikipedia.org/wiki/MIPS_architecture)
* `mips64` - [MIPS 64-bit RISC (Big Endian)](https://en.wikipedia.org/wiki/MIPS_architecture)
* `mips64el` - [MIPS 64-bit RISC (Little Endian)](https://en.wikipedia.org/wiki/MIPS_architecture)
* `openrisc` - [OpenCores RISC](https://en.wikipedia.org/wiki/OpenRISC#QEMU_support)
* `parisc` - [HP Precision Architecture RISC](https://en.wikipedia.org/wiki/PA-RISC)
* `parisc64` - [HP Precision Architecture 64-bit RISC](https://en.wikipedia.org/wiki/PA-RISC)
* `ppc` - [PowerPC 32-bit](https://en.wikipedia.org/wiki/PowerPC)
* `ppc64` - [PowerPC 64-bit](https://en.wikipedia.org/wiki/PowerPC)
* `ppcemb` - [PowerPC (Embedded 32-bit)](https://en.wikipedia.org/wiki/PowerPC)
* `s390` - [IBM Enterprise Systems Architecture/390](https://en.wikipedia.org/wiki/S390)
* `s390x` - [S/390 64-bit](https://en.wikipedia.org/wiki/S390x)
* `sh4` - [SuperH SH-4 (Little Endian)](https://en.wikipedia.org/wiki/SuperH)
* `sh4eb` - [SuperH SH-4 (Big Endian)](https://en.wikipedia.org/wiki/SuperH)
* `sparc` - [Scalable Processor Architecture, 32-bit](https://en.wikipedia.org/wiki/Sparc)
* `sparc64` - [Scalable Processor Architecture, 64-bit](https://en.wikipedia.org/wiki/Sparc)
* `unicore32` - [Microprocessor Research and Development Center RISC Unicore32](https://en.wikipedia.org/wiki/Unicore)
* `x86_64` - [64-bit extension of IA-32](https://en.wikipedia.org/wiki/X86)
* `xtensa` - [Tensilica Xtensa configurable microprocessor core](https://en.wikipedia.org/wiki/Xtensa#Processor_Cores)
* `xtensaeb` - [Tensilica Xtensa configurable microprocessor core](https://en.wikipedia.org/wiki/Xtensa#Processor_Cores) (Big Endian)

***

### instance\_uuid

**Property**: `instance_uuid`

**Type**: string&#x20;

**Description:**&#x20;

For snapshot images, this is the UUID of the VM used to create this image. The value must be a valid VM UUID.

***

### img\_config\_drive

**Property:** `img_config_drive`

**Type:** string

**Description:**&#x20;

Specifies whether the image needs a config drive.

**Supported values:**

* `mandatory`
* `optional` (default if property is not used)

***

### os\_admin\_user

**Property:** `os_admin_user`

**Type:** string

**Description:**&#x20;

The name of the user with admin privileges. The value must be a valid username (defaults to `root` for Linux guests and `Administrator` for Windows guests).

***

### os\_distro

**Property:** `os_distro`

**Type:** string

**Description:**&#x20;

The common name of the operating system distribution in lowercase (uses the same data vocabulary as the [libosinfo project](http://libosinfo.org/)). Specify only a recognized value for this field. Deprecated values are listed to assist you in searching for the recognized value.

**Supported values:**

* `arch` - Arch Linux. Do not use `archlinux` or `org.archlinux`.
* `centos` - Community Enterprise Operating System. Do not use `org.centos` or `CentOS`.
* `debian` - Debian. Do not use `Debian`  or  `org.debian`
* `fedora` - Fedora. Do not use `Fedora`, `org.fedora`, or `org.fedoraproject`.
* `freebsd` - FreeBSD. Do not use `org.freebsd`, `freeBSD`, or `FreeBSD`.
* `gentoo` - Gentoo Linux. Do not use `Gentoo` or `org.gentoo`.
* `mandrake` - Mandrakelinux (MandrakeSoft) distribution. Do not use `mandrakelinux` or `MandrakeLinux`.
* `mandriva` - Mandriva Linux. Do not use `mandrivalinux`.
* `mes` - Mandriva Enterprise Server. Do not use `mandrivaent` or `mandrivaES`.
* `msdos` - Microsoft Disc Operating System. Do not use `ms-dos`.
* `netbsd` - NetBSD. Do not use `NetBSD` or `org.netbsd`.
* `netware` - Novell NetWare. Do not use `novell` or `NetWare`.
* `openbsd` - OpenBSD. Do not use `OpenBSD` or `org.openbsd`.
* `opensolaris` - OpenSolaris. Do not use `OpenSolaris` or `org.opensolaris`.
* `opensuse` - openSUSE. Do not use `suse`, `SuSE`, or \`\` org.opensuse\`\`.
* `rhel` - Red Hat Enterprise Linux. Do not use `redhat`, `RedHat`, or `com.redhat`.
* `sled` - SUSE Linux Enterprise Desktop. Do not use `com.suse`.
* `ubuntu` - Ubuntu. Do not use `Ubuntu`, `com.ubuntu`, `org.ubuntu`, or `canonical`.
* `windows` - Microsoft Windows. Do not use `com.microsoft.server` or `windoze`.

***

### os\_version

**Property:** `os_version`

**Type:** string

**Description:**&#x20;

The operating system version as specified by the distributor.

The value must be a valid version number (for example, `11.10`).

***

### os\_secure\_boot

**Property:** `os_secure_boot`

**Type:** string

**Description:**&#x20;

Secure Boot is a security standard. When the VM starts, Secure Boot first examines software such as firmware and OS by their signature and only allows them to run if the signatures are valid.

Linux guests will require bootloader’s digital signature provided as `os_secure_boot_signature` and `hypervisor_version_requires>=10.0` image properties.

**Supported values:**

* `required` - Enable the Secure Boot feature.
* `disabled` or `optional` - (default if property not used) Disable the Secure Boot feature.

***

### os\_shutdown\_timeout

**Property:** `os_shutdown_timeout`

**Type:** integer

**Description:**&#x20;

By default, guests will be given 60 seconds to perform a graceful shutdown. After that, the VM is powered off. This property allows overriding the amount of time (unit: seconds) to allow a guest OS to cleanly shut down before power off. A value of 0 (zero) means the guest will be powered off immediately with no opportunity for guest OS clean-up.

***

### trait:\<trait\_name>

**Property:** `trait:<trait_name>`

**Type:** string

**Description:**

Traits allow specifying a server to build on a compute node with the set of traits specified in the image. The traits are associated with the resource provider that represents the compute node in the Placement API.

The syntax of specifying traits is `trait:<trait_name>=value`, for example:

`trait:HW_CPU_X86_AVX2=required`

`trait:STORAGE_DISK_SSD=required`

The compute service scheduler will pass required traits specified on the image to the compute placement API to include only resource providers that can satisfy the required traits. Traits for the resource providers can be managed using the osc-placement plugin.

Image traits are used by the compute service scheduler even in cases of volume backed VMs, if the volume source is an image with traits.

**Supported values:**

* `required` - `<trait_name>` is required on the resource provider that represents the hypervisor node on which the image is launched. This is the only valid value; any other value is invalid.

***

### vm\_mode

**Property:** `vm_mode`

**Type:** string

**Description:**

The virtual machine mode. This represents the host/guest ABI (application binary interface) used for the virtual machine.

**Supported values:**

* `hvm` - Fully virtualized. This is the mode used by QEMU and KVM.
* `xen` - Xen 3.0 paravirtualized.
* `uml` - User Mode Linux paravirtualized.
* `exe` - Executables in containers. This is the mode used by LXC.

***

### hw\_cpu\_sockets

**Property:** `hw_cpu_sockets`

**Type:** integer

**Description:**

The preferred number of sockets to expose to the guest.

***

### hw\_cpu\_cores

**Property:** `hw_cpu_cores`

**Type:** integer

**Description:**

The preferred number of cores to expose to the guest.

***

### hw\_cpu\_threads

**Property:** `hw_cpu_threads`

**Type:** integer

**Description:**

The preferred number of threads to expose to the guest.

***

### hw\_cpu\_policy

**Property:** `hw_cpu_policy`

**Type:** string

**Description:**

Used to pin the virtual CPUs (vCPUs) of VMs to the host's physical CPU cores (pCPUs). Host aggregates should be used to separate these pinned VMs from unpinned VMs as the later will not respect the resourcing requirements of the former.

**Supported values:**

* `shared` - (default if property not specified) The guest vCPUs will be allowed to freely float across host pCPUs, albeit potentially constrained by NUMA policy.
* `dedicated` - The guest vCPUs will be strictly pinned to a set of host pCPUs. In the absence of an explicit vCPU topology request, the drivers typically expose all vCPUs as sockets with one core and one thread. When strict CPU pinning is in effect the guest CPU topology will be setup to match the topology of the CPUs to which it is pinned. This option implies an overcommit ratio of 1.0. For example, if a two vCPU guest is pinned to a single host core with two threads, then the guest will get a topology of one socket, one core, two threads.

***

### hw\_cpu\_thread\_policy

**Property:** `hw_cpu_thread_policy`

**Type:** string

**Description:**

Further refines `hw_cpu_policy=dedicated` by stating how hardware CPU threads in a simultaneous multithreading-based (SMT) architecture be used. SMT-based architectures include Intel processors with Hyper-Threading technology. In these architectures, processor cores share a number of components with one or more other cores. Cores in such architectures are commonly referred to as hardware threads, while the cores that a given core share components with are known as thread siblings.

**Supported values:**

* `prefer` - (default if property not specified) The host may or may not have an SMT architecture. Where an SMT architecture is present, thread siblings are preferred.
* `isolate` - The host must not have an SMT architecture or must emulate a non-SMT architecture. If the host does not have an SMT architecture, each vCPU is placed on a different core as expected. If the host does have an SMT architecture - that is, one or more cores have thread siblings - then each vCPU is placed on a different physical core. No vCPUs from other guests are placed on the same core. All but one thread sibling on each utilized core is therefore guaranteed to be unusable.
* `require` - The host must have an SMT architecture. Each vCPU is allocated on thread siblings. If the host does not have an SMT architecture, then it is not used. If the host has an SMT architecture, but not enough cores with free thread siblings are available, then scheduling fails.

***

### hw\_cdrom\_bus

**Property:** `hw_cdrom_bus`

**Type:** string

**Description:**

Specifies the type of disk controller to attach CD-ROM devices to. As for `hw_disk_bus`.

***

### hw\_disk\_bus

**Property:** `hw_disk_bus`

**Type:** string

**Description:**

Specifies the type of disk controller to attach disk devices to.

**Supported values:**

&#x20;`scsi`, `virtio`, `uml`, `xen`, `ide`, `usb`, or `lxc`.

***

### hw\_firmware\_type

**Property:** `hw_firmware_type`

**Type:** string

**Description:**

Specifies the type of firmware with which to boot the guest.

**Supported values:**

* `bios`
* `uefi`

***

### hw\_mem\_encryption

**Property:** `hw_mem_encryption`

**Type:** boolean

**Description:**

Enables encryption of guest memory at the hardware level, if there are compute hosts available which support this. See compute service documentation on configuration of the KVM hypervisor for more details.

***

### hw\_pointer\_model

**Property:** `hw_pointer_model`

**Type:** string

**Description:**

Input devices that allow interaction with a graphical framebuffer, for example to provide a graphic tablet for absolute cursor movement. Currently only supported by the KVM/QEMU hypervisor configuration and VNC or SPICE consoles must be enabled.

**Supported values:**

* `usbtablet`

***

### hw\_rng\_model

**Property:** `hw_rng_model`

**Type:** string

**Description:**

Adds a random-number generator device to the image's VMs. This image property by itself does not guarantee that a hardware RNG will be used; it expresses a preference that may or may not be satisfied depending upon compute service configuration.

The cloud administrator can enable and control device behavior by configuring the VM's flavor. By default:

The generator device is disabled.

`/dev/urandom` is used as the default entropy source. To specify a physical hardware RNG device, use the following option in the `nova.conf` file:

`rng_dev_path=/dev/hwrng`

The use of a hardware random number generator must be configured in a flavor's extra\_specs by setting `hw_rng:allowed` to `True` in the flavor definition.

**Supported values:**

* `virtio`
* Other supported device.

***

### hw\_time\_hpet

**Property:** `hw_time_hpet`

**Type:** boolean

**Description:**

Adds support for the High Precision Event Timer (HPET) for x86 guests in the libvirt driver when `hypervisor_type=qemu` and `architecture=i686` or `architecture=x86_64`. The timer can be enabled by setting `hw_time_hpet=true`. By default HPET remains disabled.

***

### hw\_machine\_type

**Property:** `hw_machine_type`

**Type:** string

**Description:**

Enables booting an ARM system using the specified machine type. If an ARM image is used and its machine type is not explicitly specified, then Compute uses the `virt` machine type as the default for ARMv7 and AArch64. Valid types can be viewed by using the `virsh capabilities` command (machine types are displayed in the `machine` tag).

***

### os\_type

**Property:** `os_type`

**Type:** string

**Description:**

The operating system installed on the image. The libvirt API driver contains logic that takes different actions depending on the value of the `os_type` parameter of the image. For example, for `os_type=windows` images, it creates a FAT32-based swap partition instead of a Linux swap partition, and it limits the injected host name to less than 16 characters.&#x20;

**Supported values:**

* `linux`
* `windows`

***

### hw\_scsi\_model

**Property:** `hw_scsi_model`

**Type:** string

**Description:**

Enables the use of VirtIO SCSI (virtio-scsi) to provide block device access for VMs; by default, VMs use VirtIO Block (virtio-blk). VirtIO SCSI is a para-virtualized SCSI controller device that provides improved scalability and performance, and supports advanced SCSI hardware.

**Supported values:**

* `virtio-scsi`

***

### hw\_serial\_port\_count

**Property:** `hw_serial_port_count`

**Type:** integer

**Description:**

Specifies the count of serial ports that should be provided. If `hw:serial_port_count` is not set in the flavor's extra\_specs, then any count is permitted. If `hw:serial_port_count` is set, then this provides the default serial port count. It is permitted to override the default serial port count, but only with a lower value.

***

### hw\_video\_model

**Property:** `hw_video_model`

**Type:** string

**Description:**

The graphic device model presented to the guest. `none` disables the graphics device in the guest and should generally be used when using GPU passthrough.

**Supported values:**

* `vga`
* `cirrus`
* `vmvga`
* `xen`
* `qxl`
* `virtio`
* `gop`
* `none`
* `bochs`

***

### hw\_video\_ram

**Property:** `hw_video_ram`

**Type:** integer

**Description:**

Maximum RAM in MB for the video image. Used only if a `hw_video:ram_max_mb` value has been set in the flavor's extra\_specs and that value is higher than the value set in `hw_video_ram`

***

### hw\_watchdog\_action

**Property:** `hw_watchdog_action`

**Type:** string

**Description:**

Enables a virtual hardware watchdog device that carries out the specified action if the server hangs. The watchdog uses the i6300esb device (emulating a PCI Intel 6300ESB). If `hw_watchdog_action` is not specified, the watchdog is disabled.

**Supported values:**

* `disabled` - (default) The device is not attached. Allows the user to disable the watchdog for the image, even if it has been enabled using the image's flavor.
* `reset` - Forcefully reset the guest.
* `poweroff` - Forcefully power off the guest.
* `pause` - Pause the guest.
* `none` - Only enable the watchdog; do nothing if the server hangs.

***

### hw\_vif\_model

**Property:** `hw_vif_model`

**Type:** string

**Description:**

Specifies the model of virtual network interface device to use.

Options:

* `e1000`, `e1000e`, `ne2k_pci`, `pcnet`, `rtl8139`, `virtio`, and `vmxnet3`.

***

### hw\_vif\_multiqueue\_enabled

**Property:** `hw_vif_multiqueue_enabled`

**Type:** boolean

**Description:**

If true, this enables the virtio-net multiqueue feature. In this case, the driver sets the number of queues equal to the number of guest vCPUs. This makes the network performance scale across a number of vCPUs.

***

### hw\_boot\_menu

**Property:** `hw_boot_menu`

**Type:** boolean

**Description:**

If true, enables the BIOS bootmenu. In cases where both the image metadata and Extra Spec are set, the Extra Spec setting is used. This allows for flexibility in setting/overriding the default behavior as needed.

***

### hw\_pmu

**Property:** `hw_pmu`

**Type:** boolean

**Description:**

Controls emulation of a virtual performance monitoring unit (vPMU) in the guest. To reduce latency in realtime workloads disable the vPMU by setting `hw_pmu=false`.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.platform9.com/private-cloud-director/images-and-image-library/image-properties.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
