From 7508179ed973a1ad0d26754d39180be8066c7df4 Mon Sep 17 00:00:00 2001
From: Chris Evich <cevich@redhat.com>
Date: Fri, 19 Jul 2019 10:46:36 -0400
Subject: Cirrus: Add experimental fedora VM image & test

Signed-off-by: Chris Evich <cevich@redhat.com>
---
 contrib/cirrus/README.md                |  8 ++++++++
 contrib/cirrus/integration_test.sh      |  9 ++++++++-
 contrib/cirrus/lib.sh                   |  2 +-
 contrib/cirrus/packer/fedora_setup.sh   | 13 ++++++++++++-
 contrib/cirrus/packer/libpod_images.yml |  5 +++++
 contrib/cirrus/packer/ubuntu_setup.sh   |  6 +++---
 contrib/cirrus/packer/xfedora_setup.sh  |  1 +
 contrib/cirrus/setup_environment.sh     |  7 +++++--
 8 files changed, 43 insertions(+), 8 deletions(-)
 create mode 120000 contrib/cirrus/packer/xfedora_setup.sh

(limited to 'contrib')

diff --git a/contrib/cirrus/README.md b/contrib/cirrus/README.md
index 18ef3e7f7..ada362d95 100644
--- a/contrib/cirrus/README.md
+++ b/contrib/cirrus/README.md
@@ -69,6 +69,13 @@ Confirm that cross-compile of podman-remote functions for both `windows`
 and `darwin` targets.
 
 
+### ``special_testing_cgroupv2`` Task
+
+Use the latest Fedora release with the required kernel options pre-set for
+exercising cgroups v2 with podman integration tests.  Also depends on
+having `SPECIALMODE` set to 'cgroupv2`
+
+
 ### ``test_build_cache_images_task`` Task
 
 Modifying the contents of cache-images is tested by making changes to
@@ -266,5 +273,6 @@ values follows:
               and utilized for testing.
 * `in_podman`: Causes testing to occur within a container executed by
                podman on the host.
+* `cgroupv2`: The kernel on this VM was prepared with options to enable v2 cgroups
 * `windows`: See **darwin**
 * `darwin`: Signals the ``special_testing_cross`` task to cross-compile the remote client.
diff --git a/contrib/cirrus/integration_test.sh b/contrib/cirrus/integration_test.sh
index cfaf33b85..8a43176e4 100755
--- a/contrib/cirrus/integration_test.sh
+++ b/contrib/cirrus/integration_test.sh
@@ -36,6 +36,13 @@ case "$SPECIALMODE" in
                 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
                 -o CheckHostIP=no $GOSRC/$SCRIPT_BASE/rootless_test.sh ${TESTSUITE}
         ;;
+    cgroupv2)
+        make
+        make install PREFIX=/usr ETCDIR=/etc
+        make test-binaries
+        echo "WARNING: Integration tests not yet ready for cgroups V2"
+        #TODO: make local${TESTSUITE}
+        ;;
     none)
         make
         make install PREFIX=/usr ETCDIR=/etc
@@ -52,5 +59,5 @@ case "$SPECIALMODE" in
         warn '' "No $SPECIALMODE remote client integration tests configured"
         ;;
     *)
-        die 110 "Unsupported \$SPECIAL_MODE: $SPECIALMODE"
+        die 110 "Unsupported \$SPECIALMODE: $SPECIALMODE"
 esac
diff --git a/contrib/cirrus/lib.sh b/contrib/cirrus/lib.sh
index f2a668caf..a20ee5a62 100644
--- a/contrib/cirrus/lib.sh
+++ b/contrib/cirrus/lib.sh
@@ -55,7 +55,7 @@ PACKER_VER="1.3.5"
 # CSV of cache-image names to build (see $PACKER_BASE/libpod_images.json)
 
 # Base-images rarely change, define them here so they're out of the way.
-export PACKER_BUILDS="${PACKER_BUILDS:-ubuntu-18,fedora-30,fedora-29}"
+export PACKER_BUILDS="${PACKER_BUILDS:-ubuntu-18,fedora-30,xfedora-30,fedora-29}"
 # Google-maintained base-image names
 export UBUNTU_BASE_IMAGE="ubuntu-1804-bionic-v20190722a"
 # Manually produced base-image names (see $SCRIPT_BASE/README.md)
diff --git a/contrib/cirrus/packer/fedora_setup.sh b/contrib/cirrus/packer/fedora_setup.sh
index e9b145391..f73df4182 100644
--- a/contrib/cirrus/packer/fedora_setup.sh
+++ b/contrib/cirrus/packer/fedora_setup.sh
@@ -8,7 +8,7 @@ set -e
 # Load in library (copied by packer, before this script was run)
 source /tmp/libpod/$SCRIPT_BASE/lib.sh
 
-req_env_var SCRIPT_BASE
+req_env_var SCRIPT_BASE PACKER_BUILDER_NAME GOSRC
 
 install_ooe
 
@@ -85,6 +85,17 @@ systemd_banish
 
 sudo /tmp/libpod/hack/install_catatonit.sh
 
+# Same script is used for several related contexts
+case "$PACKER_BUILDER_NAME" in
+    xfedora*)
+        echo "Configuring CGroups v2 enabled on next boot"
+        sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1"
+        ;&  # continue to next matching item
+    *)
+        echo "Finalizing $PACKER_BUILDER_NAME VM image"
+        ;;
+esac
+
 rh_finalize
 
 echo "SUCCESS!"
diff --git a/contrib/cirrus/packer/libpod_images.yml b/contrib/cirrus/packer/libpod_images.yml
index 2e2b21426..cae5d4138 100644
--- a/contrib/cirrus/packer/libpod_images.yml
+++ b/contrib/cirrus/packer/libpod_images.yml
@@ -47,6 +47,10 @@ builders:
       name: 'fedora-30'
       source_image: '{{user `FEDORA_BASE_IMAGE`}}'
 
+    - <<: *gce_hosted_image
+      name: 'xfedora-30'
+      source_image: '{{user `FEDORA_BASE_IMAGE`}}'
+
     - <<: *gce_hosted_image
       name: 'fedora-29'
       source_image: '{{user `PRIOR_FEDORA_BASE_IMAGE`}}'
@@ -60,6 +64,7 @@ provisioners:
     - type: 'shell'
       script: '{{user `GOSRC`}}/{{user `PACKER_BASE`}}/{{split build_name "-" 0}}_setup.sh'
       environment_vars:
+          - 'PACKER_BUILDER_NAME={{build_name}}'
           - 'GOSRC=/tmp/libpod'
           - 'SCRIPT_BASE={{user `SCRIPT_BASE`}}'
 
diff --git a/contrib/cirrus/packer/ubuntu_setup.sh b/contrib/cirrus/packer/ubuntu_setup.sh
index dba191ad2..4b50d6dc3 100644
--- a/contrib/cirrus/packer/ubuntu_setup.sh
+++ b/contrib/cirrus/packer/ubuntu_setup.sh
@@ -15,6 +15,9 @@ install_ooe
 export GOPATH="$(mktemp -d)"
 trap "sudo rm -rf $GOPATH" EXIT
 
+# Ensure there are no disruptive periodic services enabled by default in image
+systemd_banish
+
 echo "Updating/configuring package repositories."
 $LILTO $SUDOAPTGET update
 $LILTO $SUDOAPTGET install software-properties-common
@@ -100,9 +103,6 @@ ooe.sh sudo update-grub
 sudo /tmp/libpod/hack/install_catatonit.sh
 ooe.sh sudo make -C /tmp/libpod install.libseccomp.sudo
 
-# Ensure there are no disruptive periodic services enabled by default in image
-systemd_banish
-
 ubuntu_finalize
 
 echo "SUCCESS!"
diff --git a/contrib/cirrus/packer/xfedora_setup.sh b/contrib/cirrus/packer/xfedora_setup.sh
new file mode 120000
index 000000000..5e9f1ec77
--- /dev/null
+++ b/contrib/cirrus/packer/xfedora_setup.sh
@@ -0,0 +1 @@
+fedora_setup.sh
\ No newline at end of file
diff --git a/contrib/cirrus/setup_environment.sh b/contrib/cirrus/setup_environment.sh
index 5d350263e..7b6765f8a 100755
--- a/contrib/cirrus/setup_environment.sh
+++ b/contrib/cirrus/setup_environment.sh
@@ -62,9 +62,12 @@ install_test_configs
 make install.tools
 
 case "$SPECIALMODE" in
-    none)
+    cgroupv2)
         remove_packaged_podman_files  # we're building from source
         ;;
+    none)
+        remove_packaged_podman_files
+        ;;
     rootless)
         # Only do this once, even if ROOTLESS_USER (somehow) changes
         if ! grep -q 'ROOTLESS_USER' /etc/environment
@@ -85,5 +88,5 @@ case "$SPECIALMODE" in
     windows) ;&  # for podman-remote building only
     darwin) ;;
     *)
-        die 111 "Unsupported \$SPECIAL_MODE: $SPECIALMODE"
+        die 111 "Unsupported \$SPECIALMODE: $SPECIALMODE"
 esac
-- 
cgit v1.2.3-54-g00ecf