1033 lines
38 KiB
INI
1033 lines
38 KiB
INI
# Copyright (C) 2014 Red Hat, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
#
|
|
#
|
|
#
|
|
# =========================================
|
|
# Nova Hypervisor Feature Capability Matrix
|
|
# =========================================
|
|
#
|
|
# This obsoletes the information previously at
|
|
#
|
|
# https://wiki.openstack.org/wiki/HypervisorSupportMatrix
|
|
#
|
|
# This file contains a specification of what feature capabilities each
|
|
# hypervisor driver in Nova is able to support. Feature capabilities include
|
|
# what API operations are supported, what storage / networking features can be
|
|
# used and what aspects of the guest machine can be configured. The capabilities
|
|
# can be considered to be structured into nested groups, but in this file they
|
|
# have been flattened for ease of representation. The section names represent
|
|
# the group structure. At the top level there are the following groups defined
|
|
#
|
|
# - operation - public API operations
|
|
# - storage - host storage configuration options
|
|
# - networking - host networking configuration options
|
|
# - guest - guest hardware configuration options
|
|
#
|
|
# When considering which capabilities should be marked as mandatory,
|
|
# consider the general guiding principles listed in the support-matrix.rst
|
|
# file
|
|
#
|
|
# The 'status' field takes possible values
|
|
#
|
|
# - mandatory - unconditionally required to be implemented
|
|
# - optional - optional to support, nice to have
|
|
# - choice(group) - at least one of the options within the named group
|
|
# must be implemented
|
|
# - conditional(cond) - required, if the referenced condition is met.
|
|
#
|
|
# The value against each 'driver-impl-XXXX' entry refers to the level
|
|
# of the implementation of the feature in that driver
|
|
#
|
|
# - complete - fully implemented, expected to work at all times
|
|
# - partial - implemented, but with caveats about when it will work
|
|
# eg some configurations or hardware or guest OS may not
|
|
# support it
|
|
# - missing - not implemented at all
|
|
#
|
|
# In the case of the driver being marked as 'partial', then
|
|
# 'driver-notes-XXX' entry should be used to explain the caveats
|
|
# around the implementation.
|
|
#
|
|
# The 'cli' field takes a list of nova client commands, separated by semicolon.
|
|
# These CLi commands are related to that feature.
|
|
# Example:
|
|
# cli=nova list;nova show <server>
|
|
#
|
|
[targets]
|
|
# List of driver impls we are going to record info for later
|
|
# This list only covers drivers that are in the Nova source
|
|
# tree. Out of tree drivers should maintain their own equivalent
|
|
# document, and merge it with this when their code merges into
|
|
# Nova core.
|
|
driver-impl-xenserver=XenServer
|
|
driver-impl-libvirt-kvm-x86=Libvirt KVM (x86)
|
|
driver-impl-libvirt-kvm-ppc64=Libvirt KVM (ppc64)
|
|
driver-impl-libvirt-kvm-s390x=Libvirt KVM (s390x)
|
|
driver-impl-libvirt-qemu-x86=Libvirt QEMU (x86)
|
|
driver-impl-libvirt-lxc=Libvirt LXC
|
|
driver-impl-libvirt-xen=Libvirt Xen
|
|
driver-impl-libvirt-vz-vm=Libvirt Virtuozzo VM
|
|
driver-impl-libvirt-vz-ct=Libvirt Virtuozzo CT
|
|
driver-impl-vmware=VMware vCenter
|
|
driver-impl-hyperv=Hyper-V
|
|
driver-impl-ironic=Ironic
|
|
|
|
[operation.attach-volume]
|
|
title=Attach block volume to instance
|
|
status=optional
|
|
notes=The attach volume operation provides a means to hotplug
|
|
additional block storage to a running instance. This allows
|
|
storage capabilities to be expanded without interruption of
|
|
service. In a cloud model it would be more typical to just
|
|
spin up a new instance with large storage, so the ability to
|
|
hotplug extra storage is for those cases where the instance
|
|
is considered to be more of a pet than cattle. Therefore
|
|
this operation is not considered to be mandatory to support.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[operation.detach-volume]
|
|
title=Detach block volume from instance
|
|
status=optional
|
|
notes=See notes for attach volume operation.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[operation.maintenance-mode]
|
|
title=Set the host in a maintenance mode
|
|
status=optional
|
|
notes=This operation allows a host to be placed into maintenance
|
|
mode, automatically triggering migration of any running
|
|
instances to an alternative host and preventing new
|
|
instances from being launched. This is not considered
|
|
to be a mandatory operation to support.
|
|
The CLI command is "nova host-update <host>".
|
|
The driver methods to implement are "host_maintenance_mode" and
|
|
"set_host_enabled".
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=missing
|
|
driver-impl-libvirt-kvm-ppc64=missing
|
|
driver-impl-libvirt-kvm-s390x=missing
|
|
driver-impl-libvirt-qemu-x86=missing
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=missing
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[operation.evacuate]
|
|
title=Evacuate instances from a host
|
|
status=optional
|
|
notes=A possible failure scenario in a cloud environment is the outage
|
|
of one of the compute nodes. In such a case the instances of the down
|
|
host can be evacuated to another host. It is assumed that the old host
|
|
is unlikely ever to be powered back on, otherwise the evacuation
|
|
attempt will be rejected. When the instances get moved to the new
|
|
host, their volumes get re-attached and the locally stored data is
|
|
dropped. That happens in the same way as a rebuild.
|
|
This is not considered to be a mandatory operation to support.
|
|
cli=nova evacuate <server>;nova host-evacuate <host>
|
|
driver-impl-xenserver=unknown
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=unknown
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=unknown
|
|
driver-impl-libvirt-lxc=unknown
|
|
driver-impl-libvirt-xen=unknown
|
|
driver-impl-vmware=unknown
|
|
driver-impl-hyperv=unknown
|
|
driver-impl-ironic=unknown
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[operation.get-guest-info]
|
|
title=Guest instance status
|
|
status=mandatory
|
|
notes=Provides a quick report on information about the guest instance,
|
|
including the power state, memory allocation, CPU allocation, number
|
|
of vCPUs and cummulative CPU execution time. As well as being
|
|
informational, the power state is used by the compute manager for
|
|
tracking changes in guests. Therefore this operation is considered
|
|
mandatory to support.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=complete
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[operation.get-host-info]
|
|
title=Guest host status
|
|
status=optional
|
|
notes=Unclear what this refers to
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[operation.live-migrate]
|
|
title=Live migrate instance across hosts
|
|
status=optional
|
|
notes=Live migration provides a way to move an instance off one
|
|
compute host, to another compute host. Administrators may use
|
|
this to evacuate instances from a host that needs to undergo
|
|
maintenance tasks, though of course this may not help if the
|
|
host is already suffering a failure. In general instances are
|
|
considered cattle rather than pets, so it is expected that an
|
|
instance is liable to be killed if host maintenance is required.
|
|
It is technically challenging for some hypervisors to provide
|
|
support for the live migration operation, particularly those
|
|
built on the container based virtualization. Therefore this
|
|
operation is not considered mandatory to support.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=missing
|
|
driver-notes-vmware=https://bugs.launchpad.net/nova/+bug/1192192
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[operation.launch]
|
|
title=Launch instance
|
|
status=mandatory
|
|
notes=Importing pre-existing running virtual machines on a host is
|
|
considered out of scope of the cloud paradigm. Therefore this
|
|
operation is mandatory to support in drivers.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=complete
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[operation.pause]
|
|
title=Stop instance CPUs (pause)
|
|
status=optional
|
|
notes=Stopping an instances CPUs can be thought of as roughly
|
|
equivalent to suspend-to-RAM. The instance is still present
|
|
in memory, but execution has stopped. The problem, however,
|
|
is that there is no mechanism to inform the guest OS that
|
|
this takes place, so upon unpausing, its clocks will no
|
|
longer report correct time. For this reason hypervisor vendors
|
|
generally discourage use of this feature and some do not even
|
|
implement it. Therefore this operation is considered optional
|
|
to support in drivers.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[operation.reboot]
|
|
title=Reboot instance
|
|
status=optional
|
|
notes=It is reasonable for a guest OS administrator to trigger a
|
|
graceful reboot from inside the instance. A host initiated
|
|
graceful reboot requires guest co-operation and a non-graceful
|
|
reboot can be achieved by a combination of stop+start. Therefore
|
|
this operation is considered optional.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=complete
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[operation.rescue]
|
|
title=Rescue instance
|
|
status=optional
|
|
notes=The rescue operation starts an instance in a special
|
|
configuration whereby it is booted from an special root
|
|
disk image. The goal is to allow an administrator to
|
|
recover the state of a broken virtual machine. In general
|
|
the cloud model considers instances to be cattle, so if
|
|
an instance breaks the general expectation is that it be
|
|
thrown away and a new instance created. Therefore this
|
|
operation is considered optional to support in drivers.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[operation.resize]
|
|
title=Resize instance
|
|
status=optional
|
|
notes=The resize operation allows the user to change a running
|
|
instance to match the size of a different flavor from the one
|
|
it was initially launched with. There are many different
|
|
flavor attributes that potentially need to be updated. In
|
|
general it is technically challenging for a hypervisor to
|
|
support the alteration of all relevant config settings for a
|
|
running instance. Therefore this operation is considered
|
|
optional to support in drivers.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=partial
|
|
driver-notes-ironic=Only certain ironic drivers support this
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[operation.resume]
|
|
title=Restore instance
|
|
status=optional
|
|
notes=See notes for the suspend operation
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[operation.service-control.wtf.com]
|
|
title=Service control
|
|
status=optional
|
|
notes=Something something, dark side, something something.
|
|
Hard to claim this is mandatory when no one seems to know
|
|
what "Service control" refers to in the context of virt
|
|
drivers.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=missing
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[operation.set-admin-password]
|
|
title=Set instance admin password
|
|
status=optional
|
|
notes=Provides a mechanism to re(set) the password of the administrator
|
|
account inside the instance operating system. This requires that the
|
|
hypervisor has a way to communicate with the running guest operating
|
|
system. Given the wide range of operating systems in existence it is
|
|
unreasonable to expect this to be practical in the general case. The
|
|
configdrive and metadata service both provide a mechanism for setting
|
|
the administrator password at initial boot time. In the case where this
|
|
operation were not available, the administrator would simply have to
|
|
login to the guest and change the password in the normal manner, so
|
|
this is just a convenient optimization. Therefore this operation is
|
|
not considered mandatory for drivers to support.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-notes-libvirt-kvm-x86=Requires libvirt>=1.2.16 and hw_qemu_guest_agent.
|
|
driver-impl-libvirt-kvm-ppc64=missing
|
|
driver-impl-libvirt-kvm-s390x=missing
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-notes-libvirt-qemu-x86=Requires libvirt>=1.2.16 and hw_qemu_guest_agent.
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=missing
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[operation.snapshot]
|
|
title=Save snapshot of instance disk
|
|
status=optional
|
|
notes=The snapshot operation allows the current state of the
|
|
instance root disk to be saved and uploaded back into the
|
|
glance image repository. The instance can later be booted
|
|
again using this saved image. This is in effect making
|
|
the ephemeral instance root disk into a semi-persistent
|
|
storage, in so much as it is preserved even though the guest
|
|
is no longer running. In general though, the expectation is
|
|
that the root disks are ephemeral so the ability to take a
|
|
snapshot cannot be assumed. Therefore this operation is not
|
|
considered mandatory to support.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=partial
|
|
driver-notes-libvirt-xen=Only cold snapshots (pause + snapshot) supported
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[operation.suspend]
|
|
title=Suspend instance
|
|
status=optional
|
|
notes=Suspending an instance can be thought of as roughly
|
|
equivalent to suspend-to-disk. The instance no longer
|
|
consumes any RAM or CPUs, with its live running state
|
|
having been preserved in a file on disk. It can later
|
|
be restored, at which point it should continue execution
|
|
where it left off. As with stopping instance CPUs, it suffers from the fact
|
|
that the guest OS will typically be left with a clock that
|
|
is no longer telling correct time. For container based
|
|
virtualization solutions, this operation is particularly
|
|
technically challenging to implement and is an area of
|
|
active research. This operation tends to make more sense
|
|
when thinking of instances as pets, rather than cattle,
|
|
since with cattle it would be simpler to just terminate
|
|
the instance instead of suspending. Therefore this operation
|
|
is considered optional to support.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[operation.swap-volume]
|
|
title=Swap block volumes
|
|
status=optional
|
|
notes=The swap volume operation is a mechanism for changing running
|
|
instance so that its attached volume(s) are backed by different
|
|
storage in the host. An alternative to this would be to simply
|
|
terminate the existing instance and spawn a new instance with the
|
|
new storage. In other words this operation is primarily targeted towards
|
|
the pet use case rather than cattle. Therefore this is considered
|
|
optional to support.
|
|
cli=
|
|
driver-impl-xenserver=missing
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[operation.terminate]
|
|
title=Shutdown instance
|
|
status=mandatory
|
|
notes=The ability to terminate a virtual machine is required in
|
|
order for a cloud user to stop utilizing resources and thus
|
|
avoid indefinitely ongoing billing. Therefore this operation
|
|
is mandatory to support in drivers.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=complete
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[operation.unpause]
|
|
title=Resume instance CPUs (unpause)
|
|
status=optional
|
|
notes=See notes for the "Stop instance CPUs" operation
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[guest.disk.autoconfigure.wtf.com]
|
|
title=Auto configure disk
|
|
status=optional
|
|
notes=something something, dark side, something something.
|
|
Unclear just what this is about.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=missing
|
|
driver-impl-libvirt-kvm-ppc64=missing
|
|
driver-impl-libvirt-kvm-s390x=missing
|
|
driver-impl-libvirt-qemu-x86=missing
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=missing
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[guest.disk.rate-limit]
|
|
title=Instance disk I/O limits
|
|
status=optional
|
|
notes=The ability to set rate limits on virtual disks allows for
|
|
greater performance isolation between instances running on the
|
|
same host storage. It is valid to delegate scheduling of I/O
|
|
operations to the hypervisor with its default settings, instead
|
|
of doing fine grained tuning. Therefore this is not considered
|
|
to be an mandatory configuration to support.
|
|
cli=
|
|
driver-impl-xenserver=missing
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=missing
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[guest.setup.configdrive]
|
|
title=Config drive support
|
|
status=choice(guest.setup)
|
|
notes=The config drive provides an information channel into
|
|
the guest operating system, to enable configuration of the
|
|
administrator password, file injection, registration of
|
|
SSH keys, etc. Since cloud images typically ship with all
|
|
login methods locked, a mechanism to set the administrator
|
|
password of keys is required to get login access. Alternatives
|
|
include the metadata service and disk injection. At least one
|
|
of the guest setup mechanisms is required to be supported by
|
|
drivers, in order to enable login access.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=missing
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[guest.setup.inject.file]
|
|
title=Inject files into disk image
|
|
status=optional
|
|
notes=This allows for the end user to provide data for multiple
|
|
files to be injected into the root filesystem before an instance
|
|
is booted. This requires that the compute node understand the
|
|
format of the filesystem and any partitioning scheme it might
|
|
use on the block device. This is a non-trivial problem considering
|
|
the vast number of filesystems in existence. The problem of injecting
|
|
files to a guest OS is better solved by obtaining via the metadata
|
|
service or config drive. Therefore this operation is considered
|
|
optional to support.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=missing
|
|
driver-impl-libvirt-kvm-s390x=missing
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=missing
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[guest.setup.inject.networking]
|
|
title=Inject guest networking config
|
|
status=optional
|
|
notes=This allows for static networking configuration (IP
|
|
address, netmask, gateway and routes) to be injected directly
|
|
into the root filesystem before an instance is booted. This
|
|
requires that the compute node understand how networking is
|
|
configured in the guest OS which is a non-trivial problem
|
|
considering the vast number of operating system types. The
|
|
problem of configuring networking is better solved by DHCP
|
|
or by obtaining static config via the metadata service or
|
|
config drive. Therefore this operation is considered optional
|
|
to support.
|
|
cli=
|
|
driver-impl-xenserver=partial
|
|
driver-notes-xenserver=Only for Debian derived guests
|
|
driver-impl-libvirt-kvm-x86=partial
|
|
driver-notes-libvirt-kvm-x86=Only for Debian derived guests
|
|
driver-impl-libvirt-kvm-ppc64=missing
|
|
driver-impl-libvirt-kvm-s390x=missing
|
|
driver-impl-libvirt-qemu-x86=partial
|
|
driver-notes-libvirt-qemu-x86=Only for Debian derived guests
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=missing
|
|
driver-impl-vmware=partial
|
|
driver-notes-vmware=requires vmware tools installed
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[console.rdp]
|
|
title=Remote desktop over RDP
|
|
status=choice(console)
|
|
notes=This allows the administrator to interact with the graphical
|
|
console of the guest OS via RDP. This provides a way to see boot
|
|
up messages and login to the instance when networking configuration
|
|
has failed, thus preventing a network based login. Some operating
|
|
systems may prefer to emit messages via the serial console for
|
|
easier consumption. Therefore support for this operation is not
|
|
mandatory, however, a driver is required to support at least one
|
|
of the listed console access operations.
|
|
cli=
|
|
driver-impl-xenserver=missing
|
|
driver-impl-libvirt-kvm-x86=missing
|
|
driver-impl-libvirt-kvm-ppc64=missing
|
|
driver-impl-libvirt-kvm-s390x=missing
|
|
driver-impl-libvirt-qemu-x86=missing
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=missing
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[console.serial.log]
|
|
title=View serial console logs
|
|
status=choice(console)
|
|
notes=This allows the administrator to query the logs of data
|
|
emitted by the guest OS on its virtualized serial port. For
|
|
UNIX guests this typically includes all boot up messages and
|
|
so is useful for diagnosing problems when an instance fails
|
|
to successfully boot. Not all guest operating systems will be
|
|
able to emit boot information on a serial console, others may
|
|
only support graphical consoles. Therefore support for this
|
|
operation is not mandatory, however, a driver is required to
|
|
support at least one of the listed console access operations.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=missing
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[console.serial.interactive]
|
|
title=Remote interactive serial console
|
|
status=choice(console)
|
|
notes=This allows the administrator to interact with the serial
|
|
console of the guest OS. This provides a way to see boot
|
|
up messages and login to the instance when networking configuration
|
|
has failed, thus preventing a network based login. Not all guest
|
|
operating systems will be able to emit boot information on a serial
|
|
console, others may only support graphical consoles. Therefore support
|
|
for this operation is not mandatory, however, a driver is required to
|
|
support at least one of the listed console access operations.
|
|
This feature was introduced in the Juno release with blueprint
|
|
https://blueprints.launchpad.net/nova/+spec/serial-ports
|
|
cli=nova get-serial-console <server>
|
|
driver-impl-xenserver=missing
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=unknown
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=unknown
|
|
driver-impl-libvirt-lxc=unknown
|
|
driver-impl-libvirt-xen=unknown
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=missing
|
|
driver-notes-hyperv=Will be complete when this review is merged:
|
|
https://review.openstack.org/#/c/145004/
|
|
driver-impl-ironic=unknown
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[console.spice]
|
|
title=Remote desktop over SPICE
|
|
status=choice(console)
|
|
notes=This allows the administrator to interact with the graphical
|
|
console of the guest OS via SPICE. This provides a way to see boot
|
|
up messages and login to the instance when networking configuration
|
|
has failed, thus preventing a network based login. Some operating
|
|
systems may prefer to emit messages via the serial console for
|
|
easier consumption. Therefore support for this operation is not
|
|
mandatory, however, a driver is required to support at least one
|
|
of the listed console access operations.
|
|
cli=
|
|
driver-impl-xenserver=missing
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=missing
|
|
driver-impl-libvirt-kvm-s390x=missing
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=missing
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=missing
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[console.vnc]
|
|
title=Remote desktop over VNC
|
|
status=choice(console)
|
|
notes=This allows the administrator to interact with the graphical
|
|
console of the guest OS via VNC. This provides a way to see boot
|
|
up messages and login to the instance when networking configuration
|
|
has failed, thus preventing a network based login. Some operating
|
|
systems may prefer to emit messages via the serial console for
|
|
easier consumption. Therefore support for this operation is not
|
|
mandatory, however, a driver is required to support at least one
|
|
of the listed console access operations.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=missing
|
|
driver-impl-libvirt-kvm-s390x=missing
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=missing
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[storage.block]
|
|
title=Block storage support
|
|
status=optional
|
|
notes=Block storage provides instances with direct attached
|
|
virtual disks that can be used for persistent storage of data.
|
|
As an alternative to direct attached disks, an instance may
|
|
choose to use network based persistent storage. OpenStack provides
|
|
object storage via the Swift service, or a traditional filesystem
|
|
such as as NFS/GlusterFS may be used. Some types of instances may
|
|
not require persistent storage at all, being simple transaction
|
|
processing systems reading requests & sending results to and from
|
|
the network. Therefore support for this configuration is not
|
|
considered mandatory for drivers to support.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=partial
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[storage.block.backend.fibrechannel]
|
|
title=Block storage over fibre channel
|
|
status=optional
|
|
notes=To maximise performance of the block storage, it may be desirable
|
|
to directly access fibre channel LUNs from the underlying storage
|
|
technology on the compute hosts. Since this is just a performance
|
|
optimization of the I/O path it is not considered mandatory to support.
|
|
cli=
|
|
driver-impl-xenserver=missing
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=missing
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[storage.block.backend.iscsi]
|
|
title=Block storage over iSCSI
|
|
status=condition(storage.block==complete)
|
|
notes=If the driver wishes to support block storage, it is common to
|
|
provide an iSCSI based backend to access the storage from cinder.
|
|
This isolates the compute layer for knowledge of the specific storage
|
|
technology used by Cinder, albeit at a potential performance cost due
|
|
to the longer I/O path involved. If the driver chooses to support
|
|
block storage, then this is considered mandatory to support, otherwise
|
|
it is considered optional.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[storage.block.backend.iscsi.auth.chap]
|
|
title=CHAP authentication for iSCSI
|
|
status=optional
|
|
notes=If accessing the cinder iSCSI service over an untrusted LAN it
|
|
is desirable to be able to enable authentication for the iSCSI
|
|
protocol. CHAP is the commonly used authentication protocol for
|
|
iSCSI. This is not considered mandatory to support. (?)
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=missing
|
|
|
|
[storage.image]
|
|
title=Image storage support
|
|
status=mandatory
|
|
notes=This refers to the ability to boot an instance from an image
|
|
stored in the glance image repository. Without this feature it
|
|
would not be possible to bootstrap from a clean environment, since
|
|
there would be no way to get block volumes populated and reliance
|
|
on external PXE servers is out of scope. Therefore this is considered
|
|
a mandatory storage feature to support.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=complete
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[networking.firewallrules]
|
|
title=Network firewall rules
|
|
status=optional
|
|
notes=Unclear how this is different from security groups
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=missing
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[networking.routing]
|
|
title=Network routing
|
|
status=optional
|
|
notes=Unclear what this refers to
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=missing
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=complete
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[networking.securitygroups]
|
|
title=Network security groups
|
|
status=optional
|
|
notes=The security groups feature provides a way to define rules
|
|
to isolate the network traffic of different instances running
|
|
on a compute host. This would prevent actions such as MAC and
|
|
IP address spoofing, or the ability to setup rogue DHCP servers.
|
|
In a private cloud environment this may be considered to be a
|
|
superfluous requirement. Thereforce this is considered to be
|
|
an optional configuration to support.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=partial
|
|
driver-notes-vmware=This is supported by the Neutron NSX plugins
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[networking.topology.flat]
|
|
title=Flat networking
|
|
status=choice(networking.topology)
|
|
notes=Provide network conenctivity to guests using a
|
|
flat topology across all compute nodes. At least one
|
|
of the networking configurations is mandatory to
|
|
support in the drivers.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=complete
|
|
driver-impl-ironic=complete
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|
|
|
|
[networking.topology.vlan]
|
|
title=VLAN networking
|
|
status=choice(networking.topology)
|
|
notes=Provide network connectivity to guests using VLANs
|
|
to define the topology. At least one of the networking
|
|
configurations is mandatory to support in the drivers.
|
|
cli=
|
|
driver-impl-xenserver=complete
|
|
driver-impl-libvirt-kvm-x86=complete
|
|
driver-impl-libvirt-kvm-ppc64=complete
|
|
driver-impl-libvirt-kvm-s390x=complete
|
|
driver-impl-libvirt-qemu-x86=complete
|
|
driver-impl-libvirt-lxc=complete
|
|
driver-impl-libvirt-xen=complete
|
|
driver-impl-vmware=complete
|
|
driver-impl-hyperv=missing
|
|
driver-impl-ironic=missing
|
|
driver-impl-libvirt-vz-vm=complete
|
|
driver-impl-libvirt-vz-ct=complete
|