heat/devstack/upgrade/from-rocky/upgrade-heat
Doug Hellmann 8ae5f8657b 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>
2018-11-01 11:54:05 -04:00

56 lines
2.1 KiB
Bash
Executable File

#!/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
}