From 5964a9b34b1e68a2a965ffd1689be3eb37ba3570 Mon Sep 17 00:00:00 2001
From: Michael Gugino <mgugino@redhat.com>
Date: Tue, 26 Sep 2017 13:53:32 -0400
Subject: Fix origin repo deployment

Currently, origin deployments place a repo on nodes and
masters named centos-openshift-origin. At some point,
the maintainers of centos-openshift-origin migrated
previous releases of openshift to their own respective
repositories.

This commit provides the correct repositories for
centos-openshift-origin based on the variable openshift_release,
defaulting to the latest release reposititory (unversioned).

Fixes: https://github.com/openshift/openshift-ansible/issues/5404
---
 roles/openshift_repos/tasks/centos_repos.yml | 25 +++++++++++++++++++++++++
 roles/openshift_repos/tasks/main.yaml        | 19 +------------------
 2 files changed, 26 insertions(+), 18 deletions(-)
 create mode 100644 roles/openshift_repos/tasks/centos_repos.yml

(limited to 'roles/openshift_repos/tasks')

diff --git a/roles/openshift_repos/tasks/centos_repos.yml b/roles/openshift_repos/tasks/centos_repos.yml
new file mode 100644
index 000000000..7dc15af2a
--- /dev/null
+++ b/roles/openshift_repos/tasks/centos_repos.yml
@@ -0,0 +1,25 @@
+---
+# Note: OpenShift repositories under CentOS may be shipped through the
+# "centos-release-openshift-origin" package which configures the repository.
+# This task matches the file names provided by the package so that they are
+# not installed twice in different files and remains idempotent.
+
+- name: Configure origin gpg keys
+  copy:
+    src: "origin/gpg_keys/openshift-ansible-CentOS-SIG-PaaS"
+    dest: "/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS"
+  notify: refresh cache
+
+# openshift_release is formatted to a standard string in openshift_version role.
+# openshift_release is expected to be in format 'x.y.z...' here.
+# Here, we drop the '.' characters and try to match the correct repo template
+# for our corresponding openshift_release.
+- name: Configure correct origin release repository
+  template:
+    src: "{{ item }}"
+    dest: "/etc/yum.repos.d/{{ (item | basename | splitext)[0] }}"
+  with_first_found:
+    - "CentOS-OpenShift-Origin{{ (openshift_release | default('')).split('.') | join('') }}.repo.j2"
+    - "CentOS-OpenShift-Origin{{ ((openshift_release | default('')).split('.') | join(''))[0:2] }}.repo.j2"
+    - "CentOS-OpenShift-Origin.repo.j2"
+  notify: refresh cache
diff --git a/roles/openshift_repos/tasks/main.yaml b/roles/openshift_repos/tasks/main.yaml
index f972c0fd9..d41245093 100644
--- a/roles/openshift_repos/tasks/main.yaml
+++ b/roles/openshift_repos/tasks/main.yaml
@@ -30,30 +30,13 @@
   - when: r_openshift_repos_has_run is not defined
     block:
 
-    # Note: OpenShift repositories under CentOS may be shipped through the
-    # "centos-release-openshift-origin" package which configures the repository.
-    # This task matches the file names provided by the package so that they are
-    # not installed twice in different files and remains idempotent.
-    - name: Configure origin repositories and gpg keys if needed
-      copy:
-        src: "{{ item.src }}"
-        dest: "{{ item.dest }}"
-      with_items:
-      - src: origin/gpg_keys/openshift-ansible-CentOS-SIG-PaaS
-        dest: /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS
-      - src: origin/repos/openshift-ansible-centos-paas-sig.repo
-        dest: /etc/yum.repos.d/CentOS-OpenShift-Origin.repo
-      notify: refresh cache
+    - include: centos_repos.yml
       when:
       - ansible_os_family == "RedHat"
       - ansible_distribution != "Fedora"
       - openshift_deployment_type == 'origin'
       - openshift_enable_origin_repo | default(true) | bool
 
-    - name: Enable centos-openshift-origin-testing repository
-      command: yum-config-manager --enable centos-openshift-origin-testing
-      when: openshift_repos_enable_testing | bool
-
     - name: Ensure clean repo cache in the event repos have been changed manually
       debug:
         msg: "First run of openshift_repos"
-- 
cgit v1.2.3