This document details the transition roadmap for moving the neutron client’s OpenStack Networking API support, both the Python library and the neutron command-line interface (CLI), to the OpenStack Client (OSC) and the OpenStack Python SDK. This transition is being guided by the Deprecate individual CLIs in favour of OSC OpenStack spec. See the Neutron RFE, OSC neutron support etherpad and details below for the overall progress of this transition.
This transition will result in the neutron client’s neutron CLI being deprecated and then eventually removed. The neutron CLI will be replaced by OSC’s networking support available via the openstack CLI. This is similar to the deprecation and removal process for the keystone client’s keystone CLI. The neutron client’s Python library won’t be deprecated. It will be available along side the networking support provided by the OpenStack Python SDK.
Users of the neutron client’s command extensions will need to transition to the OSC plugin system before the neutron CLI is removed. Such users will maintain their OSC plugin commands within their own project and will be responsible for deprecating and removing their neutron CLI extension.
The neutron CLI version 4.x, without extensions, supports over 200 commands while the openstack CLI version 2.1.0 supports about 30 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 gap, a couple critical questions for developers during this transition are “Which CLI do I change?” and “Where does my CLI belong?” The answer depends on the state of a command and the state of the overall transition. Details are outlined in the tables below. Early stages of the transition will require dual maintenance. Eventually, dual maintenance will be reduced to critical bug fixes 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 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:
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 file. openstack networking commands outside python-openstackclient are encouraged but not required to use the OpenStack Python SDK.
When adding an openstack networking command to python-openstackclient, you can optionally propose an OSC command spec 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 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 which command to change.