aa8ba61828
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 |
||
---|---|---|
doc | ||
openstack | ||
releasenotes | ||
.gitignore | ||
.gitreview | ||
.yamllint | ||
.zuul.yaml | ||
CONTRIBUTORS.wrs | ||
LICENSE | ||
README.rst | ||
centos_build_layer.cfg | ||
centos_dev_docker_images.inc | ||
centos_helm.inc | ||
centos_iso_image.inc | ||
centos_pkg_dirs | ||
centos_pkg_dirs_containers | ||
centos_srpms_centos.lst | ||
centos_stable_docker_images.inc | ||
debian_build_layer.cfg | ||
debian_iso_image.inc | ||
debian_pkg_dirs | ||
debian_stable_docker_images.inc | ||
debian_stable_wheels.inc | ||
test-requirements.txt | ||
tox.ini |
README.rst
stx-upstream
StarlingX Upstream Packages