From b6d9cf7685b79418905bc9cf6f3ccf0763053c06 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rados=C5=82aw=20Piliszek?= <radoslaw.piliszek@gmail.com>
Date: Thu, 12 Aug 2021 19:11:53 +0000
Subject: [PATCH] [CI] Fix Debian upgrade

Debian upgrades failed on using the ansible command to remove
chrony service because of broken python autodetection.
This patch uses the same workaround we have in globals-default.j2.
This is not nice long-term but there is no reason to keep the two
out of sync. We should remove this workaround from both places
when the situation fixes itself (possibly with newer Ansible).

Change-Id: I8b7f0c76d55cd31311285ce746acb6335e044470
---
 tests/upgrade.sh | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/tests/upgrade.sh b/tests/upgrade.sh
index 26a198d9fc..678add5c52 100755
--- a/tests/upgrade.sh
+++ b/tests/upgrade.sh
@@ -8,6 +8,7 @@ export PYTHONUNBUFFERED=1
 
 
 function upgrade {
+    local ansible_extra_vars
     RAW_INVENTORY=/etc/kolla/inventory
     # generate self-signed certificates for the optional internal TLS tests
     if [[ "$TLS_ENABLED" = "True" ]]; then
@@ -21,11 +22,15 @@ function upgrade {
     kolla-ansible -i ${RAW_INVENTORY} -vvv chrony-cleanup &> /tmp/logs/ansible/chrony-cleanup
     if [[ $(source /etc/os-release && echo $ID) = "centos" ]]; then
         chrony_service="chronyd"
+        ansible_extra_vars=""
     else
         chrony_service="chrony"
+        # Force the use of python3 on Debian and Ubuntu remote hosts. These distros
+        # typically have an unversioned Python interpreter which links to python2.7.
+        ansible_extra_vars="-e ansible_python_interpreter=/usr/bin/python3"
     fi
-    ansible all -i $RAW_INVENTORY -m package -a 'name=chrony state=present' -b &> /tmp/logs/ansible/chrony-install
-    ansible all -i $RAW_INVENTORY -m service -a 'name='$chrony_service' state=started enabled=yes' -b &>> /tmp/logs/ansible/chrony-install
+    ansible all -i $RAW_INVENTORY $ansible_extra_vars -m package -a 'name=chrony state=present' -b &> /tmp/logs/ansible/chrony-install
+    ansible all -i $RAW_INVENTORY $ansible_extra_vars -m service -a 'name='$chrony_service' state=started enabled=yes' -b &>> /tmp/logs/ansible/chrony-install
 
     kolla-ansible -i ${RAW_INVENTORY} -vvv prechecks &> /tmp/logs/ansible/upgrade-prechecks
     kolla-ansible -i ${RAW_INVENTORY} -vvv pull &> /tmp/logs/ansible/pull-upgrade