network: Move TaaS commands to a separate entrypoint group

Resolve a TODO from the review round.

Change-Id: I819f6b8545081037a500bebefcbde898e62fdcc5
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
Stephen Finucane
2025-12-11 13:26:08 +00:00
parent 97c2238df1
commit 5b5287355e
3 changed files with 32 additions and 9 deletions

View File

@@ -23,6 +23,7 @@ DEFAULT_API_VERSION = '2.0'
API_VERSION_OPTION = 'os_network_api_version'
API_NAME = 'network'
API_VERSIONS = ('2.0', '2')
API_EXTENSIONS = ('taas',)
def make_client(instance):

View File

@@ -118,15 +118,42 @@ class OpenStackShell(shell.OpenStackShell):
},
)
# Command groups deal only with major versions
version = '.v' + version_opt.replace('.', '_').split('_')[0]
cmd_group = 'openstack.' + api.replace('-', '_') + version
# Build our command group which we expect to look like:
#
# openstack.<service>.vN
#
# Note that command groups deal only with major versions
cmd_group = '.'.join(
[
'openstack',
api.replace('-', '_'),
'v' + version_opt.replace('.', '_').split('_')[0],
]
)
self.command_manager.add_command_group(cmd_group)
self.log.debug(
'%(name)s API version %(version)s, cmd group %(group)s',
{'name': api, 'version': version_opt, 'group': cmd_group},
)
mod_extensions = getattr(mod, 'API_EXTENSIONS', None)
if not mod_extensions:
continue
for extension in mod_extensions:
extension_cmd_group = '.'.join([cmd_group, extension])
self.command_manager.add_command_group(extension_cmd_group)
self.log.debug(
'%(name)s API version %(version)s '
'(%(extension)s extension), cmd group %(group)s',
{
'name': api,
'version': version_opt,
'extension': extension,
'group': cmd_group,
},
)
def _load_commands(self):
"""Load commands via cliff/stevedore

View File

@@ -11,7 +11,6 @@ authors = [
readme = {file = "README.rst", content-type = "text/x-rst"}
license = {text = "Apache-2.0"}
dynamic = ["version", "dependencies"]
# dependencies = [ ]
requires-python = ">=3.10"
classifiers = [
"Environment :: OpenStack",
@@ -27,10 +26,6 @@ classifiers = [
"Programming Language :: Python :: 3.13",
]
# [project.optional-dependencies]
# test = [
# ]
[project.urls]
Homepage = "https://docs.openstack.org/python-openstackclient/"
Repository = "https://opendev.org/openstack/python-openstackclient/"
@@ -540,7 +535,7 @@ subnet_pool_set = "openstackclient.network.v2.subnet_pool:SetSubnetPool"
subnet_pool_show = "openstackclient.network.v2.subnet_pool:ShowSubnetPool"
subnet_pool_unset = "openstackclient.network.v2.subnet_pool:UnsetSubnetPool"
# Tap-as-a-Service
[project.entry-points."openstack.network.v2.taas"]
tap_flow_create = "openstackclient.network.v2.taas.tap_flow:CreateTapFlow"
tap_flow_delete = "openstackclient.network.v2.taas.tap_flow:DeleteTapFlow"
tap_flow_list = "openstackclient.network.v2.taas.tap_flow:ListTapFlow"