From 287adab05ebcae4bef16759795ad0907ffb2489c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rados=C5=82aw=20Piliszek?= <radoslaw.piliszek@gmail.com>
Date: Fri, 8 Nov 2019 15:46:42 +0100
Subject: [PATCH] CentOS 8: Add deploy jobs in CI

Adds new CI job definitions for CentOS 8:

- kolla-ansible-centos8-source
- kolla-ansible-centos8-binary
- kolla-ansible-centos8-source-ceph-ansible
- kolla-ansible-centos8-source-cinder-lvm
- kolla-ansible-centos8-source-mariadb
- kolla-ansible-centos8-source-bifrost
- kolla-ansible-centos8-source-zun
- kolla-ansible-centos8-source-swift
- kolla-ansible-centos8-source-scenario-nfv
- kolla-ansible-centos8-source-ironic
- kolla-ansible-centos8-binary-ironic
- kolla-ansible-centos8-source-masakari
- kolla-ansible-centos8-source-cells

The following jobs are added to the check pipeline:

- kolla-ansible-centos8-source
- kolla-ansible-centos8-binary
- kolla-ansible-centos8-source-cinder-lvm
- kolla-ansible-centos8-source-mariadb
- kolla-ansible-centos8-source-zun
- kolla-ansible-centos8-source-swift
- kolla-ansible-centos8-source-scenario-nfv
- kolla-ansible-centos8-source-ironic
- kolla-ansible-centos8-binary-ironic
- kolla-ansible-centos8-source-cells

The following jobs are not yet passing so are not added to the check
pipeline:

- kolla-ansible-centos8-source-ceph-ansible
- kolla-ansible-centos8-source-bifrost
- kolla-ansible-centos8-source-masakari

The kolla-ansible-centos8-source job is added to the gate.

Upgrade jobs will be added when CentOS 8 support exists in Train.

Depends-On: https://review.opendev.org/704337
Depends-On: https://review.opendev.org/704848
Depends-On: https://review.opendev.org/704965

Co-Authored-By: Mark Goddard <mark@stackhpc.com>

Change-Id: Ibd806feee71721b122b77d7eff33228ca1cc2853
Partially-Implements: blueprint centos-rhel-8
---
 tests/templates/globals-default.j2 | 10 +--
 tools/setup_gate.sh                |  9 ++-
 zuul.d/jobs.yaml                   | 97 ++++++++++++++++++++++++++++++
 zuul.d/nodesets.yaml               | 24 ++++++++
 zuul.d/project.yaml                | 16 +++++
 5 files changed, 150 insertions(+), 6 deletions(-)

diff --git a/tests/templates/globals-default.j2 b/tests/templates/globals-default.j2
index c7e6312ef3..7a258298f1 100644
--- a/tests/templates/globals-default.j2
+++ b/tests/templates/globals-default.j2
@@ -1,9 +1,9 @@
 ---
-# Force the use of python2 on remote hosts. This is necessary for delegate_to:
-# localhost, which will otherwise use the local python interpreter (python3).
-# On CentOS 7, that fails due to a lack of python3 bindings for SELinux.
-# https://bugs.centos.org/view.php?id=16389
-ansible_python_interpreter: /usr/bin/python2
+# Force the use of python2 on Ubuntu/Debian and CentOS7 remote hosts. This is
+# necessary for delegate_to: localhost, which will otherwise use the local
+# python interpreter (python3).  On CentOS 7, that fails due to a lack of
+# python3 bindings for SELinux.  https://bugs.centos.org/view.php?id=16389
+ansible_python_interpreter: /usr/bin/python{{ '2' if ansible_os_family != 'RedHat' or ansible_distribution_major_version == '7' else '3' }}
 
 kolla_base_distro: "{{ base_distro }}"
 kolla_install_type: "{{ install_type }}"
diff --git a/tools/setup_gate.sh b/tools/setup_gate.sh
index 753b7313a3..36e768cae6 100755
--- a/tools/setup_gate.sh
+++ b/tools/setup_gate.sh
@@ -99,7 +99,14 @@ function prepare_images {
     fi
     sudo docker run -d -p 4000:5000 --restart=always -v /opt/kolla_registry/:/var/lib/registry --name registry registry:2
     pushd "${KOLLA_SRC_DIR}"
-    sudo tox -e "build-${BASE_DISTRO}-${INSTALL_TYPE}"
+    # TODO(mgoddard): Remove this if block when CentOS 7 is no longer
+    # supported.
+    if [[ $BASE_DISTRO == "centos" ]] && [[ $BASE_DISTRO_MAJOR_VERSION -eq 8 ]]; then
+        kolla_base_distro=centos8
+    else
+        kolla_base_distro=${BASE_DISTRO}
+    fi
+    sudo tox -e "build-${kolla_base_distro}-${INSTALL_TYPE}"
     # NOTE(yoctozepto): due to debian buster we push after images are built
     # see https://github.com/docker/for-linux/issues/711
     if [[ "debian" == $BASE_DISTRO ]]; then
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index 75c0616165..6ff28d4de1 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -7,6 +7,14 @@
       base_distro: centos
       install_type: source
 
+- job:
+    name: kolla-ansible-centos8-source
+    parent: kolla-ansible-base
+    nodeset: kolla-ansible-centos8
+    vars:
+      base_distro: centos
+      install_type: source
+
 - job:
     name: kolla-ansible-debian-source-aarch64
     parent: kolla-ansible-debian-source
@@ -50,6 +58,15 @@
       base_distro: centos
       install_type: binary
 
+- job:
+    name: kolla-ansible-centos8-binary
+    parent: kolla-ansible-base
+    nodeset: kolla-ansible-centos8
+    voting: false
+    vars:
+      base_distro: centos
+      install_type: binary
+
 - job:
     name: kolla-ansible-ubuntu-binary
     parent: kolla-ansible-base
@@ -86,6 +103,15 @@
       base_distro: centos
       install_type: source
 
+- job:
+    name: kolla-ansible-centos8-source-ceph-ansible
+    parent: kolla-ansible-ceph-ansible-base
+    nodeset: kolla-ansible-centos8-multi
+    timeout: 9000
+    vars:
+      base_distro: centos
+      install_type: source
+
 - job:
     name: kolla-ansible-ubuntu-source-ceph-ansible
     parent: kolla-ansible-ceph-ansible-base
@@ -103,6 +129,14 @@
       base_distro: centos
       install_type: source
 
+- job:
+    name: kolla-ansible-centos8-source-mariadb
+    parent: kolla-ansible-mariadb-base
+    nodeset: kolla-ansible-centos8-multi
+    vars:
+      base_distro: centos
+      install_type: source
+
 - job:
     name: kolla-ansible-ubuntu-source-mariadb
     parent: kolla-ansible-mariadb-base
@@ -178,6 +212,13 @@
     vars:
       base_distro: centos
 
+- job:
+    name: kolla-ansible-centos8-source-bifrost
+    parent: kolla-ansible-bifrost-base
+    nodeset: kolla-ansible-centos8
+    vars:
+      base_distro: centos
+
 - job:
     name: kolla-ansible-centos-source-zun
     parent: kolla-ansible-zun-base
@@ -186,6 +227,14 @@
       base_distro: centos
       install_type: source
 
+- job:
+    name: kolla-ansible-centos8-source-zun
+    parent: kolla-ansible-zun-base
+    nodeset: kolla-ansible-centos8-multi
+    vars:
+      base_distro: centos
+      install_type: source
+
 - job:
     name: kolla-ansible-ubuntu-source-zun
     parent: kolla-ansible-zun-base
@@ -202,6 +251,14 @@
       base_distro: centos
       install_type: source
 
+- job:
+    name: kolla-ansible-centos8-source-swift
+    parent: kolla-ansible-swift-base
+    nodeset: kolla-ansible-centos8-multi
+    vars:
+      base_distro: centos
+      install_type: source
+
 - job:
     name: kolla-ansible-ubuntu-source-swift
     parent: kolla-ansible-swift-base
@@ -218,6 +275,14 @@
       base_distro: centos
       install_type: source
 
+- job:
+    name: kolla-ansible-centos8-source-scenario-nfv
+    parent: kolla-ansible-scenario-nfv-base
+    nodeset: kolla-ansible-centos8-multi
+    vars:
+      base_distro: centos
+      install_type: source
+
 - job:
     name: kolla-ansible-centos-source-ironic
     parent: kolla-ansible-ironic-base
@@ -226,6 +291,14 @@
       base_distro: centos
       install_type: source
 
+- job:
+    name: kolla-ansible-centos8-source-ironic
+    parent: kolla-ansible-ironic-base
+    nodeset: kolla-ansible-centos8
+    vars:
+      base_distro: centos
+      install_type: source
+
 - job:
     name: kolla-ansible-centos-binary-ironic
     parent: kolla-ansible-ironic-base
@@ -234,6 +307,14 @@
       base_distro: centos
       install_type: binary
 
+- job:
+    name: kolla-ansible-centos8-binary-ironic
+    parent: kolla-ansible-ironic-base
+    nodeset: kolla-ansible-centos8
+    vars:
+      base_distro: centos
+      install_type: binary
+
 - job:
     name: kolla-ansible-ubuntu-source-ironic
     parent: kolla-ansible-ironic-base
@@ -268,6 +349,14 @@
       base_distro: centos
       install_type: source
 
+- job:
+    name: kolla-ansible-centos8-source-masakari
+    parent: kolla-ansible-masakari-base
+    nodeset: kolla-ansible-centos8
+    vars:
+      base_distro: centos
+      install_type: source
+
 - job:
     name: kolla-ansible-centos-source-cells
     parent: kolla-ansible-cells-base
@@ -275,3 +364,11 @@
     vars:
       base_distro: centos
       install_type: source
+
+- job:
+    name: kolla-ansible-centos8-source-cells
+    parent: kolla-ansible-cells-base
+    nodeset: kolla-ansible-centos8-multi
+    vars:
+      base_distro: centos
+      install_type: source
diff --git a/zuul.d/nodesets.yaml b/zuul.d/nodesets.yaml
index 0995c9d4d1..588f24fc1c 100644
--- a/zuul.d/nodesets.yaml
+++ b/zuul.d/nodesets.yaml
@@ -5,6 +5,12 @@
       - name: primary
         label: centos-7
 
+- nodeset:
+    name: kolla-ansible-centos8
+    nodes:
+      - name: primary
+        label: centos-8
+
 - nodeset:
     name: kolla-ansible-debian
     nodes:
@@ -82,3 +88,21 @@
         nodes:
           - secondary1
           - secondary2
+
+- nodeset:
+    name: kolla-ansible-centos8-multi
+    nodes:
+      - name: primary
+        label: centos-8
+      - name: secondary1
+        label: centos-8
+      - name: secondary2
+        label: centos-8
+    groups:
+      - name: switch
+        nodes:
+          - primary
+      - name: peers
+        nodes:
+          - secondary1
+          - secondary2
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index 81c5fbbb0d..d351bb0478 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -12,32 +12,47 @@
     check:
       jobs:
         - kolla-ansible-centos-source
+        - kolla-ansible-centos8-source
         - kolla-ansible-debian-source
         - kolla-ansible-ubuntu-source
         - kolla-ansible-ubuntu-source-multinode-ipv6
         - kolla-ansible-ubuntu-source-ceph
         - kolla-ansible-centos-source-ceph
         - kolla-ansible-bifrost-centos-source
+        # FIXME(mgoddard): Bifrost CentOS 8 support in progress.
+        # - kolla-ansible-centos8-source-bifrost
         - kolla-ansible-centos-source-zun
+        - kolla-ansible-centos8-source-zun
         - kolla-ansible-ubuntu-source-zun
         - kolla-ansible-centos-source-swift
+        - kolla-ansible-centos8-source-swift
         - kolla-ansible-ubuntu-source-swift
         - kolla-ansible-centos-source-scenario-nfv
+        - kolla-ansible-centos8-source-scenario-nfv
         - kolla-ansible-ubuntu-source-masakari
         - kolla-ansible-centos-source-masakari
+        # FIXME(mgoddard): Masakari CentOS 8 job.
+        # - kolla-ansible-centos8-source-masakari
         - kolla-ansible-centos-source-ironic
+        - kolla-ansible-centos8-source-ironic
         - kolla-ansible-centos-binary-ironic
+        - kolla-ansible-centos8-binary-ironic
         - kolla-ansible-ubuntu-source-ironic
         - kolla-ansible-centos-source-upgrade
         - kolla-ansible-ubuntu-source-upgrade
         - kolla-ansible-centos-source-upgrade-ceph
         - kolla-ansible-ubuntu-source-upgrade-ceph
         - kolla-ansible-centos-binary
+        - kolla-ansible-centos8-binary
         - kolla-ansible-ubuntu-binary
         - kolla-ansible-centos-source-cells
+        - kolla-ansible-centos8-source-cells
         - kolla-ansible-centos-source-mariadb
+        - kolla-ansible-centos8-source-mariadb
         - kolla-ansible-ubuntu-source-mariadb
         - kolla-ansible-centos-source-ceph-ansible
+        # FIXME(mgoddard): Ceph-ansible CentOS 8 job.
+        # - kolla-ansible-centos8-source-ceph-ansible
         - kolla-ansible-ubuntu-source-ceph-ansible
         - kolla-ansible-centos-source-upgrade-ceph-ansible
         - kolla-ansible-ubuntu-source-upgrade-ceph-ansible
@@ -48,6 +63,7 @@
       queue: kolla
       jobs:
         - kolla-ansible-centos-source
+        - kolla-ansible-centos8-source
         - kolla-ansible-ubuntu-source
         - kolla-ansible-centos-source-upgrade
         - kolla-ansible-ubuntu-source-upgrade