From 467ef444d4e78d24911886f3ec42c3c13720dc74 Mon Sep 17 00:00:00 2001
From: Jan Chaloupka <jchaloup@redhat.com>
Date: Wed, 17 May 2017 15:03:32 +0200
Subject: fix etcd_container_version detection

---
 .../openshift-cluster/upgrades/etcd/upgrade.yml    | 96 +++++++++++++---------
 1 file changed, 57 insertions(+), 39 deletions(-)

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

diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/upgrade.yml b/playbooks/common/openshift-cluster/upgrades/etcd/upgrade.yml
index 45e301315..54f9e21a1 100644
--- a/playbooks/common/openshift-cluster/upgrades/etcd/upgrade.yml
+++ b/playbooks/common/openshift-cluster/upgrades/etcd/upgrade.yml
@@ -2,43 +2,61 @@
 - name: Determine etcd version
   hosts: oo_etcd_hosts_to_upgrade
   tasks:
-  - name: Record RPM based etcd version
-    command: rpm -qa --qf '%{version}' etcd\*
-    args:
-      warn: no
-    register: etcd_rpm_version
-    failed_when: false
+  - block:
+    - name: Record RPM based etcd version
+      command: rpm -qa --qf '%{version}' etcd\*
+      args:
+        warn: no
+      register: etcd_rpm_version
+      failed_when: false
+      # AUDIT:changed_when: `false` because we are only inspecting
+      # state, not manipulating anything
+      changed_when: false
+
+    - debug:
+        msg: "Etcd rpm version {{ etcd_rpm_version.stdout }} detected"
     when: not openshift.common.is_containerized | bool
-    # AUDIT:changed_when: `false` because we are only inspecting
-    # state, not manipulating anything
-    changed_when: false
-
-  - name: Record containerized etcd version
-    command: docker exec etcd_container rpm -qa --qf '%{version}' etcd\*
-    register: etcd_container_version
-    failed_when: false
-    when: openshift.common.is_containerized | bool
-    # AUDIT:changed_when: `false` because we are only inspecting
-    # state, not manipulating anything
-    changed_when: false
-
-  - name: Record containerized etcd version
-    command: docker exec etcd_container rpm -qa --qf '%{version}' etcd\*
-    register: etcd_container_version
-    failed_when: false
-    when: openshift.common.is_containerized | bool and not openshift.common.is_etcd_system_container | bool
-    # AUDIT:changed_when: `false` because we are only inspecting
-    # state, not manipulating anything
-    changed_when: false
-
-  - name: Record containerized etcd version
-    command: runc exec etcd_container rpm -qa --qf '%{version}' etcd\*
-    register: etcd_container_version
-    failed_when: false
-    when: openshift.common.is_containerized | bool and openshift.common.is_etcd_system_container | bool
-    # AUDIT:changed_when: `false` because we are only inspecting
-    # state, not manipulating anything
-    changed_when: false
+
+  - block:
+    - name: Record containerized etcd version (docker)
+      command: docker exec etcd_container rpm -qa --qf '%{version}' etcd\*
+      register: etcd_container_version_docker
+      failed_when: false
+      # AUDIT:changed_when: `false` because we are only inspecting
+      # state, not manipulating anything
+      changed_when: false
+      when:
+      - not openshift.common.is_etcd_system_container | bool
+
+      # Given a register variables is set even if the whwen condition
+      # is false, we need to set etcd_container_version separately
+    - set_fact:
+        etcd_container_version: "{{ etcd_container_version_docker.stdout }}"
+      when:
+      - not openshift.common.is_etcd_system_container | bool
+
+    - name: Record containerized etcd version (runc)
+      command: runc exec etcd_container rpm -qa --qf '%{version}' etcd\*
+      register: etcd_container_version_runc
+      failed_when: false
+      # AUDIT:changed_when: `false` because we are only inspecting
+      # state, not manipulating anything
+      changed_when: false
+      when:
+      - openshift.common.is_etcd_system_container | bool
+
+      # Given a register variables is set even if the whwen condition
+      # is false, we need to set etcd_container_version separately
+    - set_fact:
+        etcd_container_version: "{{ etcd_container_version_runc.stdout }}"
+      when:
+      - openshift.common.is_etcd_system_container | bool
+
+    - debug:
+        msg: "Etcd containerized version {{ etcd_container_version }} detected"
+
+    when:
+    - openshift.common.is_containerized | bool
 
 # I really dislike this copy/pasta but I wasn't able to find a way to get it to loop
 # through hosts, then loop through tasks only when appropriate
@@ -67,7 +85,7 @@
     upgrade_version: 2.2.5
   tasks:
   - include: containerized_tasks.yml
-    when: etcd_container_version.stdout | default('99') | version_compare('2.2','<') and openshift.common.is_containerized | bool
+    when: etcd_container_version | default('99') | version_compare('2.2','<') and openshift.common.is_containerized | bool
 
 - name: Upgrade RPM hosts to 2.3
   hosts: oo_etcd_hosts_to_upgrade
@@ -85,7 +103,7 @@
     upgrade_version: 2.3.7
   tasks:
   - include: containerized_tasks.yml
-    when: etcd_container_version.stdout | default('99') | version_compare('2.3','<') and openshift.common.is_containerized | bool
+    when: etcd_container_version | default('99') | version_compare('2.3','<') and openshift.common.is_containerized | bool
 
 - name: Upgrade RPM hosts to 3.0
   hosts: oo_etcd_hosts_to_upgrade
@@ -103,7 +121,7 @@
     upgrade_version: 3.0.15
   tasks:
   - include: containerized_tasks.yml
-    when: etcd_container_version.stdout | default('99') | version_compare('3.0','<') and openshift.common.is_containerized | bool
+    when: etcd_container_version | default('99') | version_compare('3.0','<') and openshift.common.is_containerized | bool
 
 - name: Upgrade fedora to latest
   hosts: oo_etcd_hosts_to_upgrade
-- 
cgit v1.2.3