install under python3 by default when enabled

Remove the requirement that services explicitly enable python3 support
in order to be tested under python3 when running with python3
enabled. Keep the enable_python3_package() function for backwards
compatibility, for now, since it is called in some devstack plugins.

Explicitly add swift to the set of packages that should not be installed
using python3 by default until full support is available.

Change-Id: I8ab0a7c242bbf5bf3f091f5a85a98e2f4543f856
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
Doug Hellmann 2018-12-04 11:33:03 -05:00 committed by Tom Barron
parent a88a22969c
commit 36377f63e3
3 changed files with 13 additions and 41 deletions

View File

@ -115,13 +115,12 @@ function check_python3_support_for_package_remote {
echo $classifier echo $classifier
} }
# python3_enabled_for() checks if the service(s) specified as arguments are # python3_enabled_for() assumes the service(s) specified as arguments are
# enabled by the user in ``ENABLED_PYTHON3_PACKAGES``. # enabled for python 3 unless explicitly disabled. See python3_disabled_for().
# #
# Multiple services specified as arguments are ``OR``'ed together; the test # Multiple services specified as arguments are ``OR``'ed together; the test
# is a short-circuit boolean, i.e it returns on the first match. # is a short-circuit boolean, i.e it returns on the first match.
# #
# Uses global ``ENABLED_PYTHON3_PACKAGES``
# python3_enabled_for dir [dir ...] # python3_enabled_for dir [dir ...]
function python3_enabled_for { function python3_enabled_for {
local xtrace local xtrace
@ -132,7 +131,9 @@ function python3_enabled_for {
local dirs=$@ local dirs=$@
local dir local dir
for dir in ${dirs}; do for dir in ${dirs}; do
[[ ,${ENABLED_PYTHON3_PACKAGES}, =~ ,${dir}, ]] && enabled=0 if ! python3_disabled_for "${dir}"; then
enabled=0
fi
done done
$xtrace $xtrace
@ -163,42 +164,29 @@ function python3_disabled_for {
return $enabled return $enabled
} }
# enable_python3_package() adds the repositories passed as argument to the # enable_python3_package() -- no-op for backwards compatibility
# ``ENABLED_PYTHON3_PACKAGES`` list, if they are not already present.
# #
# For example: # For example:
# enable_python3_package nova # enable_python3_package nova
# #
# Uses global ``ENABLED_PYTHON3_PACKAGES``
# enable_python3_package dir [dir ...] # enable_python3_package dir [dir ...]
function enable_python3_package { function enable_python3_package {
local xtrace local xtrace
xtrace=$(set +o | grep xtrace) xtrace=$(set +o | grep xtrace)
set +o xtrace set +o xtrace
local tmpsvcs="${ENABLED_PYTHON3_PACKAGES}" echo "It is no longer necessary to call enable_python3_package()."
local python3
for dir in $@; do
if [[ ,${DISABLED_PYTHON3_PACKAGES}, =~ ,${dir}, ]]; then
warn $LINENO "Attempt to enable_python3_package ${dir} when it has been disabled"
continue
fi
if ! python3_enabled_for $dir; then
tmpsvcs+=",$dir"
fi
done
ENABLED_PYTHON3_PACKAGES=$(_cleanup_service_list "$tmpsvcs")
$xtrace $xtrace
} }
# disable_python3_package() prepares the services passed as argument to be # disable_python3_package() adds the services passed as argument to
# removed from the ``ENABLED_PYTHON3_PACKAGES`` list, if they are present. # the ``DISABLED_PYTHON3_PACKAGES`` list.
# #
# For example: # For example:
# disable_python3_package swift # disable_python3_package swift
# #
# Uses globals ``ENABLED_PYTHON3_PACKAGES`` and ``DISABLED_PYTHON3_PACKAGES`` # Uses global ``DISABLED_PYTHON3_PACKAGES``
# disable_python3_package dir [dir ...] # disable_python3_package dir [dir ...]
function disable_python3_package { function disable_python3_package {
local xtrace local xtrace
@ -206,16 +194,11 @@ function disable_python3_package {
set +o xtrace set +o xtrace
local disabled_svcs="${DISABLED_PYTHON3_PACKAGES}" local disabled_svcs="${DISABLED_PYTHON3_PACKAGES}"
local enabled_svcs=",${ENABLED_PYTHON3_PACKAGES},"
local dir local dir
for dir in $@; do for dir in $@; do
disabled_svcs+=",$dir" disabled_svcs+=",$dir"
if python3_enabled_for $dir; then
enabled_svcs=${enabled_svcs//,$dir,/,}
fi
done done
DISABLED_PYTHON3_PACKAGES=$(_cleanup_service_list "$disabled_svcs") DISABLED_PYTHON3_PACKAGES=$(_cleanup_service_list "$disabled_svcs")
ENABLED_PYTHON3_PACKAGES=$(_cleanup_service_list "$enabled_svcs")
$xtrace $xtrace
} }
@ -295,7 +278,7 @@ function pip_install {
if python3_disabled_for ${package_dir##*/}; then if python3_disabled_for ${package_dir##*/}; then
echo "Explicitly using $PYTHON2_VERSION version to install $package_dir based on DISABLED_PYTHON3_PACKAGES" echo "Explicitly using $PYTHON2_VERSION version to install $package_dir based on DISABLED_PYTHON3_PACKAGES"
elif python3_enabled_for ${package_dir##*/}; then elif python3_enabled_for ${package_dir##*/}; then
echo "Explicitly using $PYTHON3_VERSION version to install $package_dir based on ENABLED_PYTHON3_PACKAGES" echo "Using $PYTHON3_VERSION version to install $package_dir based on default behavior"
sudo_pip="$sudo_pip LC_ALL=en_US.UTF-8" sudo_pip="$sudo_pip LC_ALL=en_US.UTF-8"
cmd_pip=$(get_pip_command $PYTHON3_VERSION) cmd_pip=$(get_pip_command $PYTHON3_VERSION)
elif [[ -d "$package_dir" ]]; then elif [[ -d "$package_dir" ]]; then

View File

@ -129,15 +129,9 @@ fi
# Control whether Python 3 should be used at all. # Control whether Python 3 should be used at all.
export USE_PYTHON3=$(trueorfalse False USE_PYTHON3) export USE_PYTHON3=$(trueorfalse False USE_PYTHON3)
# Control whether Python 3 is enabled for specific services by the
# base name of the directory from which they are installed. See
# enable_python3_package to edit this variable and use_python3_for to
# test membership.
export ENABLED_PYTHON3_PACKAGES="nova,glance,cinder,uwsgi,python-openstackclient,openstacksdk"
# Explicitly list services not to run under Python 3. See # Explicitly list services not to run under Python 3. See
# disable_python3_package to edit this variable. # disable_python3_package to edit this variable.
export DISABLED_PYTHON3_PACKAGES="" export DISABLED_PYTHON3_PACKAGES="swift"
# When Python 3 is supported by an application, adding the specific # When Python 3 is supported by an application, adding the specific
# version of Python 3 to this variable will install the app using that # version of Python 3 to this variable will install the app using that

View File

@ -12,14 +12,9 @@ source $TOP/tests/unittest.sh
echo "Testing Python 3 functions" echo "Testing Python 3 functions"
# Initialize variables manipulated by functions under test. # Initialize variables manipulated by functions under test.
export ENABLED_PYTHON3_PACKAGES=""
export DISABLED_PYTHON3_PACKAGES="" export DISABLED_PYTHON3_PACKAGES=""
assert_false "should not be enabled yet" python3_enabled_for testpackage1 assert_true "should be enabled by default" python3_enabled_for testpackage1
enable_python3_package testpackage1
assert_equal "$ENABLED_PYTHON3_PACKAGES" "testpackage1" "unexpected result"
assert_true "should be enabled" python3_enabled_for testpackage1
assert_false "should not be disabled yet" python3_disabled_for testpackage2 assert_false "should not be disabled yet" python3_disabled_for testpackage2