From bb111d7059c948ef305564fd6ac78f53a7ec46ce Mon Sep 17 00:00:00 2001
From: Michael Gugino <mgugino@redhat.com>
Date: Fri, 26 Jan 2018 12:21:37 -0500
Subject: Correct 3.7 to 3.9 upgrade openshift_image_tag

Due to complexities upgrading two versions
at the same time, openshift_image_tag was being
set incorrectly during control_plane upgrades.

This commit ensures that openshift_image_tag
is set correctly during this process.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1536839
---
 .../upgrades/v3_9/upgrade_control_plane.yml        | 27 +++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

(limited to 'playbooks/common/openshift-cluster')

diff --git a/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade_control_plane.yml b/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade_control_plane.yml
index 4e4ed54fc..fe1fdefff 100644
--- a/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade_control_plane.yml
+++ b/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade_control_plane.yml
@@ -25,10 +25,18 @@
       openshift_upgrade_target: '3.8'
       openshift_upgrade_min: '3.7'
       openshift_release: '3.8'
-      _requested_pkg_version: "{{openshift_pkg_version if openshift_pkg_version is defined else omit }}"
-      _requested_image_tag: "{{openshift_image_tag if openshift_image_tag is defined else omit }}"
+      _requested_pkg_version: "{{ openshift_pkg_version if openshift_pkg_version is defined else omit }}"
+      _requested_image_tag: "{{ openshift_image_tag if openshift_image_tag is defined else omit }}"
+      l_double_upgrade_cp: True
     when: hostvars[groups.oo_first_master.0].openshift_currently_installed_version | version_compare('3.8','<')
 
+  - name: set l_force_image_tag_to_version = True
+    set_fact:
+      # Need to set this during 3.8 upgrade to ensure image_tag is set correctly
+      # to match 3.8 version
+      l_force_image_tag_to_version: True
+    when: _requested_image_tag is defined
+
 - import_playbook: ../pre/config.yml
   # These vars a meant to exclude oo_nodes from plays that would otherwise include
   # them by default.
@@ -69,7 +77,20 @@
       openshift_upgrade_min: '3.8'
       openshift_release: '3.9'
       openshift_pkg_version: "{{ _requested_pkg_version | default ('-3.9*') }}"
-      openshift_image_tag: "{{ _requested_image_tag | default('v3.9') }}"
+  # Set the user's specified image_tag for 3.9 upgrade if it was provided.
+  - set_fact:
+      openshift_image_tag: "{{ _requested_image_tag }}"
+      l_force_image_tag_to_version: False
+    when: _requested_image_tag is defined
+  # If the user didn't specify an image_tag, we need to force update image_tag
+  # because it will have already been set during 3.8.  If we aren't running
+  # a double upgrade, then we can preserve image_tag because it will still
+  # be the user provided value.
+  - set_fact:
+      l_force_image_tag_to_version: True
+    when:
+    - l_double_upgrade_cp is defined and l_double_upgrade_cp
+    - _requested_image_tag is not defined
 
 - import_playbook: ../pre/config.yml
   # These vars a meant to exclude oo_nodes from plays that would otherwise include
-- 
cgit v1.2.3