upstream/openstack/python-openstackclient/debian/patches
Luan Nunes Utimura aa8ba61828 Add plugin entry point sorting mechanism in OSC
On CentOS, with `python-openstackclient` on version 4.0.0
(stable/train), the plugin entry point discovery was done by using
a built-in library called `pkg_resources` ([1], [2], [3]).

On Debian, with `python-openstackclient` on version 5.4.0-4
(stable/victoria), the discovery process is now performed by using the
`stevedore` library ([4], [5], [6]).

The problem with this replacement is that, with `stevedore`, there's no
guarantee that the plugin entry point discovery list will be the same as
it was with `pkg_resources`. That is, the fetching order of entry points
may vary from CentOS to Debian.

For plugins that just extend the existing OpenStackClient (OSC) CLI by
adding commands to it, this is fine, as the loading order doesn't
matter.

However, for custom plugins that not only add commands but also override
existing entry points configured by default plugins, this may become
a problem, because the former needs to be loaded after the latter,
otherwise, the overrides will have no effect.

Therefore, this change aims to provide a plugin entry point sorting
mechanism to keep the discovery process more consistent.

By reading plugin-specific options such as `load_first` or `load_last`
from a configuration file - that can be specified through command-line
argument (--os-osc-config-file, defaults to
/etc/openstackclient/openstackclient.conf) - the plugin entry point
sorting mechanism can decide where to insert the newly discovered
plugin: at the beginning, at the end, or where it would be inserted by
default in the list.

[1] https://opendev.org/starlingx/upstream/src/branch/master/openstack/python-openstackclient/centos/python-openstackclient.spec#L19
[2] https://opendev.org/openstack/python-openstackclient/src/branch/stable/train/openstackclient/common/clientmanager.py#L146
[3] https://opendev.org/openstack/cliff/src/branch/stable/train/cliff/commandmanager.py#L61
[4] https://opendev.org/starlingx/upstream/src/branch/master/openstack/python-openstackclient/debian/meta_data.yaml#L5
[5] https://opendev.org/openstack/python-openstackclient/src/branch/stable/victoria/openstackclient/common/clientmanager.py#L147
[6] https://opendev.org/openstack/cliff/src/branch/stable/victoria/cliff/commandmanager.py#L75

Test Plan:
PASS - Build python-openstackclient package
PASS - Build/install ISO with built package
PASS - Verify that the platform OSC has an additional argument for
       reading configuration files:
       `openstack -h | grep -- --os-osc-config file`
PASS - Verify that, when reading a configuration file with the
       `load_first` or `load_last` options (in the [plugins] section),
       the order in which the specified plugins are loaded is different

Story: 2010317
Task: 47545

Signed-off-by: Luan Nunes Utimura <LuanNunes.Utimura@windriver.com>
Change-Id: If2237bc8cef197d2a163bd7b8063dfdbb2ab1c3d
2023-03-02 18:10:15 -03:00
..
0001-Add-plugin-entry-point-sorting-mechanism.patch Add plugin entry point sorting mechanism in OSC 2023-03-02 18:10:15 -03:00
series Add plugin entry point sorting mechanism in OSC 2023-03-02 18:10:15 -03:00