From 258ea62f3bb1bfc89eb4e676c77d1610aa067c43 Mon Sep 17 00:00:00 2001
From: Devan Goodwin <dgoodwin@redhat.com>
Date: Tue, 7 Jun 2016 15:17:28 -0300
Subject: Respect image tag/pkg version during upgrade.

---
 .../openshift-cluster/initialize_openshift_version.yml       | 12 +++++++-----
 .../common/openshift-cluster/upgrades/v3_1_to_v3_2/pre.yml   |  8 +++++---
 roles/openshift_version/tasks/main.yml                       |  6 +++---
 3 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/playbooks/common/openshift-cluster/initialize_openshift_version.yml b/playbooks/common/openshift-cluster/initialize_openshift_version.yml
index 098558c01..972df050c 100644
--- a/playbooks/common/openshift-cluster/initialize_openshift_version.yml
+++ b/playbooks/common/openshift-cluster/initialize_openshift_version.yml
@@ -13,14 +13,16 @@
 # and we don't want to install wrong version of docker and have to downgrade
 # later.
 - name: Set openshift_version for all hosts
-  hosts: oo_all_hosts
-  tasks:
+  hosts: oo_all_hosts:!oo_first_master
+  vars:
+    openshift_version: "{{ hostvars[groups.oo_first_master.0].openshift_version }}"
+  roles:
+  - openshift_version
+  pre_tasks:
   - debug: var=hostvars[groups.oo_first_master.0].openshift_version
   - debug: var=openshift.common.version
   - debug: var=openshift_version
-  - set_fact:
-      openshift_version: "{{ openshift.common.version if (openshift.common.version is defined and openshift_version is not defined) else hostvars[groups.oo_first_master.0].openshift_version }}"
-    when: inventory_hostname != groups.oo_first_master.0
+  post_tasks:
   - debug: var=hostvars[groups.oo_first_master.0].openshift_version
   - debug: var=openshift.common.version
   - debug: var=openshift_version
diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/pre.yml b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/pre.yml
index f9ca26e34..8596443c0 100644
--- a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/pre.yml
+++ b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/pre.yml
@@ -66,9 +66,11 @@
 
 - include: ../../../../common/openshift-cluster/initialize_openshift_version.yml
   vars:
-    # Force the openshift_version role to 3.2, it will convert this to a more specific variable and
-    # make sure the openshift_image_tag and openshift_pkg_version are all set appropriately.
-    openshift_version: "3.2"
+    # Request openshift_release 3.2 and let the openshift_version role handle converting this
+    # to a more specific version, respecting openshift_image_tag and openshift_pkg_version if
+    # defined, and overriding the normal behavior of protecting the installed version
+    openshift_release: "3.2"
+    openshift_protect_installed_version: False
 
 - name: Verify upgrade can proceed on masters
   hosts: oo_masters_to_config
diff --git a/roles/openshift_version/tasks/main.yml b/roles/openshift_version/tasks/main.yml
index 1cfbff1b0..39accf579 100644
--- a/roles/openshift_version/tasks/main.yml
+++ b/roles/openshift_version/tasks/main.yml
@@ -9,12 +9,12 @@
 - debug: var=openshift_pkg_version
 - debug: var=openshift_image_tag
 
-# Here we protect the version already installed unless something has already set
-# an openshift_version to configure.
+# Protect the installed version by default unless explicitly told not to, or given an
+# openshift_version already.
 - name: Use openshift.common.version fact as version to configure if already installed
   set_fact:
     openshift_version: "{{ openshift.common.version }}"
-  when: openshift.common.version is defined and openshift_version is not defined
+  when: openshift.common.version is defined and openshift_version is not defined and openshift_protect_installed_version
 
 - name: Set openshift_version for rpm installation
   include: set_version_rpm.yml
-- 
cgit v1.2.3