summaryrefslogtreecommitdiff
path: root/doc/source/contributor/command-beta.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/source/contributor/command-beta.rst')
-rw-r--r--doc/source/contributor/command-beta.rst108
1 files changed, 108 insertions, 0 deletions
diff --git a/doc/source/contributor/command-beta.rst b/doc/source/contributor/command-beta.rst
new file mode 100644
index 00000000..40ede671
--- /dev/null
+++ b/doc/source/contributor/command-beta.rst
@@ -0,0 +1,108 @@
+.. _command-beta:
+
+============
+Command Beta
+============
+
+OpenStackClient releases do not always coincide with OpenStack
+releases. This creates challenges when developing new OpenStackClient
+commands for the current OpenStack release under development
+since there may not be an official release of the REST API
+enhancements necessary for the command. In addition, backwards
+compatibility may not be guaranteed until an official OpenStack release.
+To address these challenges, an OpenStackClient command may
+be labeled as a beta command according to the guidelines
+below. Such commands may introduce backwards incompatible
+changes and may use REST API enhancements not yet released.
+This also applies to command options associated with the beta
+command object.
+
+See the examples below on how to label an entire command or
+a specific option as a beta by updating the documentation
+and implementation.
+
+The initial release note must label the new command or option
+as a beta. No further release notes are required until the command
+or option is no longer a beta. At which time, the beta label or
+the command or option itself must be removed and a new release note
+must be provided.
+
+Beta Command Example
+--------------------
+
+Documentation
+~~~~~~~~~~~~~
+
+The command documentation must label the command as a beta.
+
+example list
+++++++++++++
+
+List examples
+
+.. caution:: This is a beta command and subject to change.
+ Use global option ``--os-beta-command`` to
+ enable this command.
+
+.. program:: example list
+.. code:: bash
+
+ openstack example list
+
+Help
+~~~~
+
+The command help must label the command as a beta.
+
+.. code-block:: python
+
+ class ShowExample(command.ShowOne):
+ """Display example details
+
+ (Caution: This is a beta command and subject to change.
+ Use global option --os-beta-command to enable
+ this command)
+ """
+
+Implementation
+~~~~~~~~~~~~~~
+
+The command must raise a ``CommandError`` exception if beta commands
+are not enabled via ``--os-beta-command`` global option.
+
+.. code-block:: python
+
+ def take_action(self, parsed_args):
+ self.validate_os_beta_command_enabled()
+
+Beta Option Example
+-------------------
+
+Documentation
+~~~~~~~~~~~~~
+
+The option documentation must label the option as a beta.
+
+.. option:: --example <example>
+
+ Example
+
+ .. caution:: This is a beta command option and subject
+ to change. Use global option ``--os-beta-command``
+ to enable this command option.
+
+Implementation
+~~~~~~~~~~~~~~
+
+The option must not be added if beta commands are not
+enabled via ``--os-beta-command`` global option.
+
+.. code-block:: python
+
+ def get_parser(self, prog_name):
+ if self.app.options.os_beta_command:
+ parser.add_argument(
+ '--example',
+ metavar='<example>',
+ help=_("Example")
+ )