diff --git a/doc/ext/support_matrix.py b/doc/ext/support_matrix.py index c3ab7a796f3a..551aeacda8d8 100644 --- a/doc/ext/support_matrix.py +++ b/doc/ext/support_matrix.py @@ -58,7 +58,7 @@ class SupportMatrixFeature(object): STATUS_CONDITION, STATUS_OPTIONAL] def __init__(self, key, title, status=STATUS_OPTIONAL, - group=None, notes=None): + group=None, notes=None, cli=[]): # A unique key (eg 'foo.bar.wizz') to identify the feature self.key = key # A human friendly short title for the feature @@ -74,6 +74,8 @@ class SupportMatrixFeature(object): # 'name' dict key is the value from SupportMatrixTarget.key # for the hypervisor in question self.implementations = {} + # A list of CLI commands which are related to that feature + self.cli = cli class SupportMatrixImplementation(object): @@ -208,11 +210,15 @@ class SupportMatrixDirective(rst.Directive): notes = None if cfg.has_option(section, "notes"): notes = cfg.get(section, "notes") + cli = [] + if cfg.has_option(section, "cli"): + cli = cfg.get(section, "cli") feature = SupportMatrixFeature(section, title, status, group, - notes) + notes, + cli) # Now we've got the basic feature details, we must process # the hypervisor driver implementation for each feature @@ -401,6 +407,11 @@ class SupportMatrixDirective(rst.Directive): para.append(nodes.inline(text=feature.notes)) item.append(para) + if feature.cli: + item.append(self._create_cli_paragraph(feature)) + + para_divers = nodes.paragraph() + para_divers.append(nodes.strong(text="drivers:")) # A sub-list giving details of each hypervisor target impls = nodes.bullet_list() for key in feature.implementations: @@ -420,9 +431,25 @@ class SupportMatrixDirective(rst.Directive): subitem.append(self._create_notes_paragraph(impl.notes)) impls.append(subitem) - item.append(impls) + para_divers.append(impls) + item.append(para_divers) details.append(item) + def _create_cli_paragraph(self, feature): + ''' Create a paragraph which represents the CLI commands of the feature + + The paragraph will have a bullet list of CLI commands. + ''' + para = nodes.paragraph() + para.append(nodes.strong(text="CLI commands:")) + commands = nodes.bullet_list() + for c in feature.cli.split(";"): + cli_command = nodes.list_item() + cli_command += nodes.literal(text=c, classes=["sp_cli"]) + commands.append(cli_command) + para.append(commands) + return para + def _create_notes_paragraph(self, notes): """ Constructs a paragraph which represents the implementation notes diff --git a/doc/source/_static/support-matrix.css b/doc/source/_static/support-matrix.css index 4fd9fa7b6683..968451dd2af2 100644 --- a/doc/source/_static/support-matrix.css +++ b/doc/source/_static/support-matrix.css @@ -39,4 +39,9 @@ .sp_impl_summary { font-size: 2em; +} + +.sp_cli { + font-family: monospace; + background-color: #F5F5F5; } \ No newline at end of file diff --git a/doc/source/support-matrix.ini b/doc/source/support-matrix.ini index eb3a3166aa5a..f223ed5f6e20 100644 --- a/doc/source/support-matrix.ini +++ b/doc/source/support-matrix.ini @@ -60,7 +60,11 @@ # '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 +# [targets] # List of driver impls we are going to record info for later # This list only covers drivers that are in the Nova source @@ -91,6 +95,7 @@ notes=The attach volume operation provides a means to hotplug 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 @@ -108,6 +113,7 @@ driver-impl-libvirt-parallels-ct=missing 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 @@ -132,6 +138,7 @@ notes=This operation allows a host to be placed into maintenance The CLI command is "nova host-update ". 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 @@ -154,6 +161,7 @@ notes=Provides a quick report on information about the guest instance, 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 @@ -171,6 +179,7 @@ driver-impl-libvirt-parallels-ct=complete 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 @@ -198,6 +207,7 @@ notes=Live migration provides a way to move an instance off one 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 @@ -218,6 +228,7 @@ 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 @@ -243,6 +254,7 @@ notes=Stopping an instances CPUs can be thought of as roughly 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 @@ -264,6 +276,7 @@ notes=It is reasonable for a guest OS administrator to trigger a 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 @@ -288,6 +301,7 @@ notes=The rescue operation starts an instance in a special 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 @@ -312,6 +326,7 @@ notes=The resize operation allows the user to change a running 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 @@ -330,6 +345,7 @@ driver-impl-libvirt-parallels-ct=missing 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 @@ -350,6 +366,7 @@ 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 @@ -377,6 +394,7 @@ notes=Provides a mechanism to re(set) the password of the administrator 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=missing driver-impl-libvirt-kvm-ppc64=missing @@ -403,6 +421,7 @@ notes=The snapshot operation allows the current state of the 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 @@ -434,6 +453,7 @@ notes=Suspending an instance can be thought of as roughly 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 @@ -457,6 +477,7 @@ notes=The swap volume operation is a mechanism for changing running 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 @@ -477,6 +498,7 @@ 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 @@ -494,6 +516,7 @@ driver-impl-libvirt-parallels-ct=complete title=Resume instance CPUs 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 @@ -512,6 +535,7 @@ 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 @@ -534,6 +558,7 @@ notes=The ability to set rate limits on virtual disks allows for 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 @@ -559,6 +584,7 @@ notes=The config drive provides an information channel into 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 @@ -584,6 +610,7 @@ notes=This allows for the end user to provide data for multiple 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 @@ -610,6 +637,7 @@ notes=This allows for static networking configuration (IP 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 @@ -638,6 +666,7 @@ notes=This allows the administrator to interact with the graphical 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 @@ -663,6 +692,7 @@ notes=This allows the administrator to query the logs of data 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 @@ -687,6 +717,7 @@ notes=This allows the administrator to interact with the graphical 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 @@ -711,6 +742,7 @@ notes=This allows the administrator to interact with the graphical 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 @@ -737,6 +769,7 @@ notes=Block storage provides instances with direct attached 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 @@ -757,6 +790,7 @@ 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 @@ -780,6 +814,7 @@ notes=If the driver wishes to support block storage, it is common to 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 @@ -800,6 +835,7 @@ 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 @@ -822,6 +858,7 @@ notes=This refers to the ability to boot an instance from an image 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 @@ -839,6 +876,7 @@ driver-impl-libvirt-parallels-ct=complete 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 @@ -856,6 +894,7 @@ driver-impl-libvirt-parallels-ct=complete 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 @@ -879,6 +918,7 @@ notes=The security groups feature provides a way to define rules 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 @@ -900,6 +940,7 @@ 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 @@ -919,6 +960,7 @@ 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