Merge "Devref Update: Transition to OpenStack Client"
This commit is contained in:
@@ -26,13 +26,13 @@ Transition to OpenStack Client
|
|||||||
This document details the transition roadmap for moving the neutron client's
|
This document details the transition roadmap for moving the neutron client's
|
||||||
OpenStack Networking API support, both the Python library and the ``neutron``
|
OpenStack Networking API support, both the Python library and the ``neutron``
|
||||||
command-line interface (CLI), to the
|
command-line interface (CLI), to the
|
||||||
`OpenStack client (OSC) <https://github.com/openstack/python-openstackclient>`_
|
`OpenStack Client (OSC) <https://github.com/openstack/python-openstackclient>`_
|
||||||
and the `OpenStack Python SDK <https://github.com/openstack/python-openstacksdk>`_.
|
and the `OpenStack Python SDK <https://github.com/openstack/python-openstacksdk>`_.
|
||||||
This transition is being guided by the
|
This transition is being guided by the
|
||||||
`Deprecate individual CLIs in favour of OSC <https://review.openstack.org/#/c/243348/>`_
|
`Deprecate individual CLIs in favour of OSC <https://review.openstack.org/#/c/243348/>`_
|
||||||
OpenStack spec. See the `Neutron RFE <https://bugs.launchpad.net/neutron/+bug/1521291>`_ and
|
OpenStack spec. See the `Neutron RFE <https://bugs.launchpad.net/neutron/+bug/1521291>`_,
|
||||||
`OSC neutron-client blueprint <https://blueprints.launchpad.net/python-openstackclient/+spec/neutron-client>`_
|
`OSC neutron support etherpad <https://etherpad.openstack.org/p/osc-neutron-support>`_ and
|
||||||
for the overall progress of this transition.
|
details below for the overall progress of this transition.
|
||||||
|
|
||||||
Overview
|
Overview
|
||||||
--------
|
--------
|
||||||
@@ -42,17 +42,15 @@ deprecated and then eventually removed. The ``neutron`` CLI will be replaced
|
|||||||
by OSC's networking support available via the ``openstack`` CLI. This is
|
by OSC's networking support available via the ``openstack`` CLI. This is
|
||||||
similar to the deprecation and removal process for the
|
similar to the deprecation and removal process for the
|
||||||
`keystone client's <https://github.com/openstack/python-keystoneclient>`_
|
`keystone client's <https://github.com/openstack/python-keystoneclient>`_
|
||||||
``keystone`` CLI.
|
``keystone`` CLI. The neutron client's Python library won't be deprecated.
|
||||||
|
It will be available along side the networking support provided by the
|
||||||
The neutron client's Python library won't be deprecated. It will be available
|
OpenStack Python SDK.
|
||||||
along side the networking support provided by the OpenStack Python SDK. However,
|
|
||||||
the OpenStack Python SDK will be used to implement OSC's networking support.
|
|
||||||
|
|
||||||
Users of the neutron client's command extensions will need to transition to the
|
Users of the neutron client's command extensions will need to transition to the
|
||||||
`OSC plugin system <http://docs.openstack.org/developer/python-openstackclient/plugins.html>`_
|
`OSC plugin system <http://docs.openstack.org/developer/python-openstackclient/plugins.html>`_
|
||||||
before the ``neutron`` CLI is removed. Such users will maintain their OSC plugin
|
before the ``neutron`` CLI is removed. Such users will maintain their OSC plugin
|
||||||
within their own project and will be responsible for deprecating and removing
|
commands within their own project and will be responsible for deprecating and
|
||||||
their ``neutron`` CLI extension.
|
removing their ``neutron`` CLI extension.
|
||||||
|
|
||||||
Transition Steps
|
Transition Steps
|
||||||
----------------
|
----------------
|
||||||
@@ -92,13 +90,12 @@ Transition Steps
|
|||||||
|
|
||||||
* `Security Group Rule CRUD <https://bugs.launchpad.net/python-openstackclient/+bug/1519512>`_
|
* `Security Group Rule CRUD <https://bugs.launchpad.net/python-openstackclient/+bug/1519512>`_
|
||||||
|
|
||||||
6. **In Progress:** OSC enhances its networking support under the
|
6. **In Progress:** OSC continues enhancing its networking support.
|
||||||
`neutron-client <https://blueprints.launchpad.net/python-openstackclient/+spec/neutron-client>`_
|
At this point and when applicable, enhancements to the ``neutron``
|
||||||
OSC spec. At this point and when applicable, enhancements to the ``neutron``
|
|
||||||
CLI must also be made to the ``openstack`` CLI and the OpenStack Python SDK.
|
CLI must also be made to the ``openstack`` CLI and the OpenStack Python SDK.
|
||||||
Enhancements to the networking support in the OpenStack Python SDK will be
|
Enhancements to the networking support in the OpenStack Python SDK will be
|
||||||
handled via bugs. Neutron stadium users of the neutron client's command
|
handled via bugs. Users of the neutron client's command extensions should
|
||||||
extensions should start their transition to the OSC plugin system.
|
start their transition to the OSC plugin system.
|
||||||
See the developer guide section below for more information on this step.
|
See the developer guide section below for more information on this step.
|
||||||
|
|
||||||
7. **Not Started:** Deprecate the ``neutron`` CLI once the criteria below have
|
7. **Not Started:** Deprecate the ``neutron`` CLI once the criteria below have
|
||||||
@@ -112,64 +109,116 @@ Transition Steps
|
|||||||
equivalent to the ``neutron`` CLI and it contains sufficient functional
|
equivalent to the ``neutron`` CLI and it contains sufficient functional
|
||||||
and unit test coverage.
|
and unit test coverage.
|
||||||
|
|
||||||
* Neutron core and advanced services projects, Neutron documentation and
|
* `Neutron Stadium <http://docs.openstack.org/developer/neutron/stadium/sub_projects.html>`_
|
||||||
`DevStack <http://docs.openstack.org/developer/devstack/>`_ use ``openstack``
|
projects, Neutron documentation and `DevStack <http://docs.openstack.org/developer/devstack/>`_
|
||||||
CLI instead of ``neutron`` CLI.
|
use ``openstack`` CLI instead of ``neutron`` CLI.
|
||||||
|
|
||||||
* Most neutron stadium users of the neutron client's command extensions have
|
* Most users of the neutron client's command extensions have transitioned
|
||||||
transitioned to the OSC plugin system and use the ``openstack`` CLI instead
|
to the OSC plugin system and use the ``openstack`` CLI instead of the
|
||||||
of the ``neutron`` CLI.
|
``neutron`` CLI.
|
||||||
|
|
||||||
8. **Not Started:** Remove the ``neutron`` CLI after two deprecation cycles.
|
8. **Not Started:** Remove the ``neutron`` CLI after two deprecation cycles.
|
||||||
|
|
||||||
Developer Guide
|
Developer Guide
|
||||||
---------------
|
---------------
|
||||||
The ``neutron`` CLI version 3.1.1, without extensions, supports over 200
|
The ``neutron`` CLI version 4.x, without extensions, supports over 200
|
||||||
commands while the ``openstack`` CLI version 2.0.1 supports about 20
|
commands while the ``openstack`` CLI version 2.1.0 supports about 30
|
||||||
networking commands. Of the 20 commands, most do not have all of the options
|
networking commands. Of the 30 commands, many do not have all of the options
|
||||||
or arguments of their ``neutron`` CLI equivalent. With this large functional
|
or arguments of their ``neutron`` CLI equivalent. With this large functional
|
||||||
gap, one critical question for developers during this transition is "Which
|
gap, a couple critical questions for developers during this transition are "Which
|
||||||
CLI do I change?" The answer depends on the state of a command and the
|
CLI do I change?" and "Where does my CLI belong?" The answer depends on the
|
||||||
state of the overall transition. Details are outlined in the table
|
state of a command and the state of the overall transition. Details are
|
||||||
below. Early stages of the transition will require dual maintenance.
|
outlined in the tables below. Early stages of the transition will require dual
|
||||||
Eventually, dual maintenance will be reduced to critical bug fixes only
|
maintenance. Eventually, dual maintenance will be reduced to critical bug fixes
|
||||||
with feature requests only being made to the ``openstack`` CLI.
|
only with feature requests only being made to the ``openstack`` CLI.
|
||||||
|
|
||||||
+----------------------+------------------------+----------------------------------------------+
|
**Which CLI do I change?**
|
||||||
| neutron Command | openstack Command | CLI to Change |
|
|
||||||
+======================+========================+==============================================+
|
|
||||||
| Exists | Doesn't Exist | neutron |
|
|
||||||
+----------------------+------------------------+----------------------------------------------+
|
|
||||||
| Exists | In Progress | neutron and update related OSC bug |
|
|
||||||
+----------------------+------------------------+----------------------------------------------+
|
|
||||||
| Exists | Exists | neutron and openstack |
|
|
||||||
+----------------------+------------------------+----------------------------------------------+
|
|
||||||
| Doesn't Exist | Doesn't Exist | neutron and openstack |
|
|
||||||
+----------------------+------------------------+----------------------------------------------+
|
|
||||||
| Doesn't Exist | Exists | openstack |
|
|
||||||
+----------------------+------------------------+----------------------------------------------+
|
|
||||||
|
|
||||||
When adding or updating an ``openstack`` networking command, changes may
|
+----------------------+------------------------+-------------------------------------------------+
|
||||||
first be required to the OpenStack Python SDK to support the underlying
|
| ``neutron`` Command | ``openstack`` Command | CLI to Change |
|
||||||
networking resource object, properties and/or actions. Once the OpenStack
|
+======================+========================+=================================================+
|
||||||
Python SDK changes are merged, the related OSC changes can be merged.
|
| Exists | Doesn't Exist | ``neutron`` |
|
||||||
The OSC changes may require an update to the OSC openstacksdk version in the
|
+----------------------+------------------------+-------------------------------------------------+
|
||||||
|
| Exists | In Progress | ``neutron`` and ``openstack`` |
|
||||||
|
| | | (update related blueprint or bug) |
|
||||||
|
+----------------------+------------------------+-------------------------------------------------+
|
||||||
|
| Exists | Exists | ``openstack`` |
|
||||||
|
| | | (assumes command parity resulting in |
|
||||||
|
| | | ``neutron`` being deprecated) |
|
||||||
|
+----------------------+------------------------+-------------------------------------------------+
|
||||||
|
| Doesn't Exist | Doesn't Exist | ``openstack`` |
|
||||||
|
+----------------------+------------------------+-------------------------------------------------+
|
||||||
|
|
||||||
|
**Where does my CLI belong?**
|
||||||
|
|
||||||
|
+---------------------------+-------------------+-------------------------------------------------+
|
||||||
|
| Networking Commands | OSC Plugin | OpenStack Project for ``openstack`` Commands |
|
||||||
|
+===========================+===================+=================================================+
|
||||||
|
| Core (Stable) | No | python-openstackclient |
|
||||||
|
+---------------------------+-------------------+-------------------------------------------------+
|
||||||
|
| Core (New/Experimental) | Yes | python-neutronclient |
|
||||||
|
| | | (with possible move to python-openstackclient) |
|
||||||
|
+---------------------------+-------------------+-------------------------------------------------+
|
||||||
|
| LBaaS v2 | Yes | neutron-lbaas |
|
||||||
|
+---------------------------+-------------------+-------------------------------------------------+
|
||||||
|
| VPNaaS v2 | Yes | neutron-vpnaas |
|
||||||
|
+---------------------------+-------------------+-------------------------------------------------+
|
||||||
|
| FWaaS v2 | Yes | neutron-fwaas |
|
||||||
|
+---------------------------+-------------------+-------------------------------------------------+
|
||||||
|
| LBaaS v1 | N/A | None (deprecated) |
|
||||||
|
+---------------------------+-------------------+-------------------------------------------------+
|
||||||
|
| FWaaS v1 | N/A | None (deprecated) |
|
||||||
|
+---------------------------+-------------------+-------------------------------------------------+
|
||||||
|
| Other | Yes | Applicable project owning networking resource |
|
||||||
|
+---------------------------+-------------------+-------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
The following network resources are part of the "Core (Stable)" group:
|
||||||
|
|
||||||
|
- availability zone
|
||||||
|
- extension
|
||||||
|
- floating ip
|
||||||
|
- network
|
||||||
|
- port
|
||||||
|
- quota
|
||||||
|
- rbac
|
||||||
|
- router
|
||||||
|
- security group
|
||||||
|
- security group rule
|
||||||
|
- subnet
|
||||||
|
- subnet pool
|
||||||
|
|
||||||
|
|
||||||
|
When adding or updating an ``openstack`` networking command to
|
||||||
|
python-openstackclient, changes may first be required to the
|
||||||
|
OpenStack Python SDK to support the underlying networking resource object,
|
||||||
|
properties and/or actions. Once the OpenStack Python SDK changes are merged,
|
||||||
|
the related OSC changes can be merged. The OSC changes may require an update
|
||||||
|
to the OSC openstacksdk version in the
|
||||||
`requirements.txt <https://github.com/openstack/python-openstackclient/blob/master/requirements.txt>`_
|
`requirements.txt <https://github.com/openstack/python-openstackclient/blob/master/requirements.txt>`_
|
||||||
file.
|
file. ``openstack`` networking commands outside python-openstackclient
|
||||||
|
are encouraged but not required to use the OpenStack Python SDK.
|
||||||
|
|
||||||
Neutron stadium users of the neutron client's command extensions must adopt the
|
When adding an ``openstack`` networking command to python-openstackclient,
|
||||||
|
you can optionally propose an
|
||||||
|
`OSC command spec <https://github.com/openstack/python-openstackclient/blob/master/doc/source/specs/commands.rst>`_
|
||||||
|
which documents the new command interface before proceeding with the implementation.
|
||||||
|
|
||||||
|
Users of the neutron client's command extensions must adopt the
|
||||||
`OSC plugin system <http://docs.openstack.org/developer/python-openstackclient/plugins.html>`_
|
`OSC plugin system <http://docs.openstack.org/developer/python-openstackclient/plugins.html>`_
|
||||||
for this transition. Such users will maintain their OSC plugin within their
|
for this transition. Such users will maintain their OSC plugin within their
|
||||||
own project and should follow the guidance in the table above to determine
|
own project and should follow the guidance in the table above to determine
|
||||||
which CLI to change.
|
which command to change.
|
||||||
|
|
||||||
Developer References
|
Developer References
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
* See `OSC neutron-client blueprint <https://blueprints.launchpad.net/python-openstackclient/+spec/neutron-client>`_
|
* See `OSC neutron support etherpad <https://etherpad.openstack.org/p/osc-neutron-support>`_
|
||||||
to determine if an ``openstack`` command is in progress. See the ``Related bugs`` list.
|
to determine if an ``openstack`` command is in progress.
|
||||||
* See `OSC command list <http://docs.openstack.org/developer/python-openstackclient/command-list.html>`_
|
* See `OSC command list <http://docs.openstack.org/developer/python-openstackclient/command-list.html>`_
|
||||||
to determine if an ``openstack`` command exists.
|
to determine if an ``openstack`` command exists.
|
||||||
|
* See `OSC command spec list <https://github.com/openstack/python-openstackclient/tree/master/doc/source/specs/command-objects>`_
|
||||||
|
to determine if an ``openstack`` command spec exists.
|
||||||
* See `OSC plugin command list <http://docs.openstack.org/developer/python-openstackclient/plugin-commands.html>`_
|
* See `OSC plugin command list <http://docs.openstack.org/developer/python-openstackclient/plugin-commands.html>`_
|
||||||
to determine if an ``openstack`` plugin command exists.
|
to determine if an ``openstack`` plugin command exists.
|
||||||
* See `OSC command structure <http://docs.openstack.org/developer/python-openstackclient/commands.html>`_
|
* See `OSC command structure <http://docs.openstack.org/developer/python-openstackclient/commands.html>`_
|
||||||
@@ -178,5 +227,6 @@ Developer References
|
|||||||
for guidance on creating new OSC command interfaces.
|
for guidance on creating new OSC command interfaces.
|
||||||
* See `OSC plugin <http://docs.openstack.org/developer/python-openstackclient/plugins.html>`_
|
* See `OSC plugin <http://docs.openstack.org/developer/python-openstackclient/plugins.html>`_
|
||||||
for information on the OSC plugin system to be used for ``neutron`` CLI extensions.
|
for information on the OSC plugin system to be used for ``neutron`` CLI extensions.
|
||||||
|
* Create an OSC blueprint: https://blueprints.launchpad.net/python-openstackclient/
|
||||||
* Report an OSC bug: https://bugs.launchpad.net/python-openstackclient/+filebug
|
* Report an OSC bug: https://bugs.launchpad.net/python-openstackclient/+filebug
|
||||||
* Report an OpenStack Python SDK bug: https://bugs.launchpad.net/python-openstacksdk/+filebug
|
* Report an OpenStack Python SDK bug: https://bugs.launchpad.net/python-openstacksdk/+filebug
|
||||||
|
Reference in New Issue
Block a user