summaryrefslogtreecommitdiff
path: root/devstack/upgrade
diff options
context:
space:
mode:
authorDoug Hellmann <doug@doughellmann.com>2018-09-28 14:22:24 -0400
committerDoug Hellmann <doug@doughellmann.com>2018-11-01 11:54:05 -0400
commit8ae5f8657b2bdf841bdf114b49839700c2ee924f (patch)
tree3d186d4c5f7afae69ab205cafe5013b6b6699ba8 /devstack/upgrade
parentcb5dce19879c0cfb4707cfadc03619822571b066 (diff)
downloadheat-8ae5f8657b2bdf841bdf114b49839700c2ee924f.tar.gz
change the dist name to 'openstack-heat'
We are updating all Python projects to publish artifacts to PyPI. The name "heat" is already taken there by another project, and they have rejected our request to claim the name. We therefore need to change the dist name used to package heat. We have some other projects publishing using an "openstack-" prefix, so I propose using the name "openstack-heat". This will not change the imports or anything else about how the code works, just how it is packaged. Add a grenade plugin for upgrading between the packages with different names so that we can clean up the old version of the code and avoid discovering the heat plugins multiple times in different locations. Change-Id: I59b55cffd9e648f842eb286b936f09c5b55a76db Signed-off-by: Doug Hellmann <doug@doughellmann.com>
Diffstat (limited to 'devstack/upgrade')
-rwxr-xr-xdevstack/upgrade/from-rocky/upgrade-heat55
1 files changed, 55 insertions, 0 deletions
diff --git a/devstack/upgrade/from-rocky/upgrade-heat b/devstack/upgrade/from-rocky/upgrade-heat
new file mode 100755
index 000000000..e7ebce4b0
--- /dev/null
+++ b/devstack/upgrade/from-rocky/upgrade-heat
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+
+# ``upgrade-heat``
+
+function configure_heat_upgrade {
+ local xtrace
+ xtrace=$(set +o | grep xtrace)
+ set -o xtrace
+
+ # The dist name for heat changed in rocky from "heat" to
+ # "openstack-heat". Having the metadata for both packages
+ # installed causes our plugins to be listed twice, so we need to
+ # remove the old one before devstack installs the new one.
+ # Using pip to uninstall the old code doesn't seem to work,
+ # so this script works a bit more aggressively. These steps
+ # should not be necessary for deployments using standard
+ # system packages from distributions.
+
+ local python_interpreter="python"
+ if python3_enabled; then
+ python_interpreter="python3"
+ fi
+
+ local sys_path=$($python_interpreter -c 'import sys; print(" ".join(sys.path))')
+ local sys_path_dir
+ local egg_link
+ local easy_file
+ for sys_path_dir in $sys_path; do
+ # Installing something in editable mode creates an "egg link"
+ # file that points to the location of the source files and
+ # metadata. When we do the upgrades for projects that preserve
+ # their name, the existing file is modified to point to the
+ # new location. In this case, heat's name is changing so we
+ # end up with a new file using the new name and the old one is
+ # untouched. We need to remove it ourselves.
+ egg_link="$sys_path_dir/heat.egg-link"
+ if [ -e "$egg_link" ]; then
+ sudo rm -f "$egg_link"
+ fi
+ # Installing a directory in editable mode adds the directory
+ # to the .pth file that setuptools manages. When we do the
+ # upgrades for projects that preserve their name, the old
+ # entry is automatically replaced with the new one. In this
+ # case, heat's name is changing, so setuptools doesn't figure
+ # out that it should remove the old entry, and we have to do
+ # it ourselves.
+ easy_file=$sys_path_dir/easy-install.pth
+ if [ -f $easy_file ]; then
+ sudo sed --in-place '/old\/heat/d' $easy_file
+ fi
+ done
+
+ ## reset to previous state
+ $xtrace
+}