From e1d470f289ade28296cd11fdc5260cc72f826710 Mon Sep 17 00:00:00 2001
From: David Moreau Simard <moi@dmsimard.com>
Date: Fri, 4 Dec 2020 18:41:11 -0500
Subject: [PATCH] container images: fixes and update to f33

- Install which (because it's sometimes not installed by default)
- Fedora 33 images are out now, build and publish them
- Remove PyYAML workaround that is no longer necessary

Fixes: https://github.com/ansible-community/ara/issues/192
Change-Id: Ia64455655cd37299d84c657a3dc87e079f92f790
---
 contrib/container-images/README.rst                | 14 +++++++-------
 contrib/container-images/centos8-pypi.sh           |  2 +-
 ...32-distribution.sh => fedora33-distribution.sh} |  6 +++---
 .../{fedora32-pypi.sh => fedora33-pypi.sh}         |  9 +++------
 .../{fedora32-source.sh => fedora33-source.sh}     |  6 +++---
 tests/with_container_images.yaml                   | 12 ++++++------
 tests/zuul_publish_container_images.yaml           | 10 +++++-----
 7 files changed, 28 insertions(+), 31 deletions(-)
 rename contrib/container-images/{fedora32-distribution.sh => fedora33-distribution.sh} (79%)
 rename contrib/container-images/{fedora32-pypi.sh => fedora33-pypi.sh} (80%)
 rename contrib/container-images/{fedora32-source.sh => fedora33-source.sh} (91%)

diff --git a/contrib/container-images/README.rst b/contrib/container-images/README.rst
index 4d52b219..2a703dbc 100644
--- a/contrib/container-images/README.rst
+++ b/contrib/container-images/README.rst
@@ -27,14 +27,14 @@ You will need to install `buildah <https://github.com/containers/buildah/blob/ma
 
 The different scripts to build container images are available in the git repository:
 
-- fedora32-distribution.sh_: Builds an image from Fedora 32 `distribution packages <https://koji.fedoraproject.org/koji/packageinfo?packageID=24394>`_
-- fedora32-pypi.sh_: Builds an image from `PyPi <https://pypi.org/project/ara>`_ packages on Fedora 32
-- fedora32-source.sh_: Builds an image from `git source <https://github.com/ansible-community/ara>`_ on Fedora 32
+- fedora33-distribution.sh_: Builds an image from Fedora 33`distribution packages <https://koji.fedoraproject.org/koji/packageinfo?packageID=24394>`_
+- fedora33-pypi.sh_: Builds an image from `PyPi <https://pypi.org/project/ara>`_ packages on Fedora 33
+- fedora33-source.sh_: Builds an image from `git source <https://github.com/ansible-community/ara>`_ on Fedora 33
 - centos8-pypi.sh_: Builds an image from `PyPi <https://pypi.org/project/ara>`_ packages on CentOS 8
 
-.. _fedora32-distribution.sh: https://github.com/ansible-community/ara/blob/master/contrib/container-images/fedora32-distribution.sh
-.. _fedora32-pypi.sh: https://github.com/ansible-community/ara/blob/master/contrib/container-images/fedora32-pypi.sh
-.. _fedora32-source.sh: https://github.com/ansible-community/ara/blob/master/contrib/container-images/fedora32-source.sh
+.. _fedora33-distribution.sh: https://github.com/ansible-community/ara/blob/master/contrib/container-images/fedora33-distribution.sh
+.. _fedora33-pypi.sh: https://github.com/ansible-community/ara/blob/master/contrib/container-images/fedora33-pypi.sh
+.. _fedora33-source.sh: https://github.com/ansible-community/ara/blob/master/contrib/container-images/fedora33-source.sh
 .. _centos8-pypi.sh: https://github.com/ansible-community/ara/blob/master/contrib/container-images/centos8-pypi.sh
 
 The scripts have no arguments other than the ability to specify an optional name
@@ -44,7 +44,7 @@ and tag:
 
     $ git clone https://github.com/ansible-community/ara
     $ cd ara/contrib/container-images
-    $ ./fedora32-source.sh ara-api:latest
+    $ ./fedora33-source.sh ara-api:latest
     # [...]
     Getting image source signatures
     Copying blob 59bbb69efd73 skipped: already exists
diff --git a/contrib/container-images/centos8-pypi.sh b/contrib/container-images/centos8-pypi.sh
index 0015981c..042749d2 100755
--- a/contrib/container-images/centos8-pypi.sh
+++ b/contrib/container-images/centos8-pypi.sh
@@ -6,7 +6,7 @@ build=$(buildah from centos:8)
 # This lets users swap easily from the sqlite default to mysql or postgresql just by tweaking settings.yaml.
 # Note: We use the packaged versions of psycopg2 and mysql python libraries so
 #       we don't need to install development libraries before installing them from PyPi.
-buildah run "${build}" -- /bin/bash -c "dnf update -y && dnf install -y epel-release && dnf install -y python3-pip python3-gunicorn python3-psycopg2 python3-mysql && dnf clean all"
+buildah run "${build}" -- /bin/bash -c "dnf update -y && dnf install -y epel-release && dnf install -y which python3-pip python3-gunicorn python3-psycopg2 python3-mysql && dnf clean all"
 
 # Install ara from source with API server extras for dependencies (django & django-rest-framework)
 buildah run "${build}" -- /bin/bash -c "pip3 install ara[server]"
diff --git a/contrib/container-images/fedora32-distribution.sh b/contrib/container-images/fedora33-distribution.sh
similarity index 79%
rename from contrib/container-images/fedora32-distribution.sh
rename to contrib/container-images/fedora33-distribution.sh
index cddcd2c5..12aa85e5 100755
--- a/contrib/container-images/fedora32-distribution.sh
+++ b/contrib/container-images/fedora33-distribution.sh
@@ -1,10 +1,10 @@
 #!/bin/bash -x
-# Builds an ARA API server container image from Fedora 32 distribution packages.
-build=$(buildah from fedora:32)
+# Builds an ARA API server container image from Fedora 33 distribution packages.
+build=$(buildah from fedora:33)
 
 # Get all updates, install the ARA API server, database backends and gunicorn application server
 # This lets users swap easily from the sqlite default to mysql or postgresql just by tweaking settings.yaml.
-buildah run "${build}" -- /bin/bash -c "dnf update -y && dnf install -y ara ara-server python3-psycopg2 python3-mysql python3-gunicorn && dnf clean all"
+buildah run "${build}" -- /bin/bash -c "dnf update -y && dnf install -y ara ara-server which python3-psycopg2 python3-mysql python3-gunicorn && dnf clean all"
 
 # Set up the container to execute SQL migrations and run the API server with gunicorn
 buildah config --env ARA_BASE_DIR=/opt/ara "${build}"
diff --git a/contrib/container-images/fedora32-pypi.sh b/contrib/container-images/fedora33-pypi.sh
similarity index 80%
rename from contrib/container-images/fedora32-pypi.sh
rename to contrib/container-images/fedora33-pypi.sh
index a841cdb4..16d75dac 100755
--- a/contrib/container-images/fedora32-pypi.sh
+++ b/contrib/container-images/fedora33-pypi.sh
@@ -1,19 +1,16 @@
 #!/bin/bash -x
-# Builds an ARA API server container image using the latest PyPi packages on Fedora 32.
-build=$(buildah from fedora:32)
+# Builds an ARA API server container image using the latest PyPi packages on Fedora 33.
+build=$(buildah from fedora:33)
 
 # Get all updates, install pip, database backends and gunicorn application server
 # This lets users swap easily from the sqlite default to mysql or postgresql just by tweaking settings.yaml.
 # Note: We use the packaged versions of psycopg2 and mysql python libraries so
 #       we don't need to install development libraries before installing them from PyPi.
-buildah run "${build}" -- /bin/bash -c "dnf update -y && dnf install -y python3-pip python3-psycopg2 python3-mysql python3-gunicorn && dnf clean all"
+buildah run "${build}" -- /bin/bash -c "dnf update -y && dnf install -y which python3-pip python3-psycopg2 python3-mysql python3-gunicorn && dnf clean all"
 
 # Install ara from source with API server extras for dependencies (django & django-rest-framework)
 buildah run "${build}" -- /bin/bash -c "pip3 install ara[server]"
 
-# TODO: Remove after 1.4.2 is released with pyyaml/ruamel.yaml fix
-buildah run "${build}" -- /bin/bash -c "pip3 install PyYAML"
-
 # Set up the container to execute SQL migrations and run the API server with gunicorn
 buildah config --env ARA_BASE_DIR=/opt/ara "${build}"
 buildah config --cmd "bash -c '/usr/local/bin/ara-manage migrate && /usr/bin/gunicorn-3 --workers=4 --access-logfile - --bind 0.0.0.0:8000 ara.server.wsgi'" "${build}"
diff --git a/contrib/container-images/fedora32-source.sh b/contrib/container-images/fedora33-source.sh
similarity index 91%
rename from contrib/container-images/fedora32-source.sh
rename to contrib/container-images/fedora33-source.sh
index 2b319f02..3f4c7cbb 100755
--- a/contrib/container-images/fedora32-source.sh
+++ b/contrib/container-images/fedora33-source.sh
@@ -1,5 +1,5 @@
 #!/bin/bash -x
-# Builds an ARA API server container image from checked out source on Fedora 32.
+# Builds an ARA API server container image from checked out source on Fedora 33.
 # Figure out source directory relative to the contrib/container-images directory
 SCRIPT_DIR=$(cd `dirname $0` && pwd -P)
 SOURCE_DIR=$(cd "${SCRIPT_DIR}/../.." && pwd -P)
@@ -10,13 +10,13 @@ python3 setup.py sdist
 sdist=$(ls dist/ara-*.tar.gz)
 popd
 
-build=$(buildah from fedora:32)
+build=$(buildah from fedora:33)
 
 # Get all updates, install pip, database backends and gunicorn application server
 # This lets users swap easily from the sqlite default to mysql or postgresql just by tweaking settings.yaml.
 # Note: We use the packaged versions of psycopg2 and mysql python libraries so
 #       we don't need to install development libraries before installing them from PyPi.
-buildah run "${build}" -- /bin/bash -c "dnf update -y && dnf install -y python3-pip python3-psycopg2 python3-mysql python3-gunicorn && dnf clean all"
+buildah run "${build}" -- /bin/bash -c "dnf update -y && dnf install -y which python3-pip python3-psycopg2 python3-mysql python3-gunicorn && dnf clean all"
 
 # Install ara from source with API server extras for dependencies (django & django-rest-framework)
 buildah run --volume ${SOURCE_DIR}:/usr/local/src/ara:z "${build}" -- /bin/bash -c "pip3 install /usr/local/src/ara/${sdist}[server]"
diff --git a/tests/with_container_images.yaml b/tests/with_container_images.yaml
index 982ae841..76ce5689 100644
--- a/tests/with_container_images.yaml
+++ b/tests/with_container_images.yaml
@@ -25,17 +25,17 @@
       # These are in chronological order of release so that we don't end up
       # running SQL migrations backwards during the tests.
       - name: localhost/ara-api
-        tag: fedora32-source-latest
-        script: fedora32-source.sh
+        tag: fedora33-source-latest
+        script: fedora33-source.sh
       - name: localhost/ara-api
-        tag: fedora32-pypi-latest
-        script: fedora32-pypi.sh
+        tag: fedora33-pypi-latest
+        script: fedora33-pypi.sh
       - name: localhost/ara-api
         tag: centos8-pypi-latest
         script: centos8-pypi.sh
       - name: localhost/ara-api
-        tag: fedora32-distribution-latest
-        script: fedora32-distribution.sh
+        tag: fedora33-distribution-latest
+        script: fedora33-distribution.sh
   tasks:
     - name: Install git, buildah and podman
       become: yes
diff --git a/tests/zuul_publish_container_images.yaml b/tests/zuul_publish_container_images.yaml
index 676e2764..b6698b87 100644
--- a/tests/zuul_publish_container_images.yaml
+++ b/tests/zuul_publish_container_images.yaml
@@ -23,22 +23,22 @@
     images:
       # These images are meant to be provided by the "with_container_images.yaml" playbook
       - name: localhost/ara-api
-        tag: fedora32-source-latest
+        tag: fedora33-source-latest
       - name: localhost/ara-api
-        tag: fedora32-pypi-latest
+        tag: fedora33-pypi-latest
       - name: localhost/ara-api
         tag: centos8-pypi-latest
       - name: localhost/ara-api
-        tag: fedora32-distribution-latest
+        tag: fedora33-distribution-latest
   tasks:
     - name: Tag images with buildah
       command: |
         buildah tag {{ item.name }}:{{ item.tag }} {{ destination }}:{{ item.tag }}
       loop: "{{ images }}"
 
-    - name: Tag latest from fedora32-source-latest
+    - name: Tag latest from fedora33-source-latest
       command: |
-        buildah tag {{ destination }}:fedora32-source-latest {{ destination }}:latest
+        buildah tag {{ destination }}:fedora33-source-latest {{ destination }}:latest
 
     - name: Push latest
       command: |