]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
tests: Use podman if available 34071/head
authorBrad Hubbard <bhubbard@redhat.com>
Fri, 20 Mar 2020 04:15:14 +0000 (14:15 +1000)
committerBrad Hubbard <bhubbard@redhat.com>
Sat, 21 Mar 2020 23:07:50 +0000 (09:07 +1000)
Signed-off-by: Brad Hubbard <bhubbard@redhat.com>
src/test/docker-test-helper.sh

index d13926b7a2cb880cf97b267de72c8a205af2e797..14814201cbe570fd099222c120eb5e3b400fa62b 100755 (executable)
@@ -25,15 +25,16 @@ function setup_container() {
     local os_type=$1
     local os_version=$2
     local opts="$3"
+    local dockercmd=$4
 
     local image=$(get_image_name $os_type $os_version)
     local build=true
-    if docker images $image | grep --quiet "^$image " ; then
-        eval touch --date=$(docker inspect $image | jq '.[0].Created') $image
+    if $dockercmd images $image | grep --quiet "^$image " ; then
+        eval touch --date=$($dockercmd inspect $image | jq '.[0].Created') $image
         found=$(find -L test/$os_type-$os_version/* -newer $image)
         rm $image
         if test -n "$found" ; then
-            docker rmi $image
+            $dockercmd rmi $image
         else
             build=false
         fi
@@ -48,7 +49,7 @@ function setup_container() {
         os_version=$os_version user_id=$(id -u) \
             perl -p -e 's/%%(\w+)%%/$ENV{$1}/g' \
             dockerfile/Dockerfile.in > dockerfile/Dockerfile
-        docker $opts build --tag=$image dockerfile
+        $dockercmd $opts build --tag=$image dockerfile
         rm -fr dockerfile
     fi
 }
@@ -110,9 +111,11 @@ function run_in_docker() {
     local opts="$1"
     shift
     local script=$1
+    shift
+    local dockercmd=$1
 
     setup_downstream $os_type $os_version $ref || return 1
-    setup_container $os_type $os_version "$opts" || return 1
+    setup_container $os_type $os_version "$opts" $dockercmd || return 1
     local downstream=$(get_downstream $os_type $os_version)
     local image=$(get_image_name $os_type $os_version)
     local upstream=$(get_upstream)
@@ -120,7 +123,7 @@ function run_in_docker() {
     mkdir -p $HOME/.ccache
     ccache="--volume $HOME/.ccache:$HOME/.ccache"
     user="--user $USER"
-    local cmd="docker run $opts --rm --name $image --privileged $ccache"
+    local cmd="$dockercmd run $opts --rm --name $image --privileged $ccache"
     cmd+=" --volume $downstream:$downstream"
     cmd+=" --volume $upstream:$upstream"
     local status=0
@@ -137,15 +140,17 @@ function run_in_docker() {
 function remove_all() {
     local os_type=$1
     local os_version=$2
+    local dockercmd=$3
     local image=$(get_image_name $os_type $os_version)
 
-    docker rm $image
-    docker rmi $image
+    $dockercmd rm $image
+    $dockercmd rmi $image
 }
 
 function usage() {
     cat <<EOF
-Run commands within Ceph sources, in a docker container
+Run commands within Ceph sources, in a container. Use podman if available,
+docker if not.
 $0 [options] command args ...
 
    [-h|--help]            display usage
@@ -237,7 +242,12 @@ EOF
 }
 
 function main_docker() {
-    if ! docker ps > /dev/null 2>&1 ; then
+    local dockercmd="docker"
+    if type podman > /dev/null; then
+        dockercmd="podman"
+    fi
+
+    if ! $dockercmd ps > /dev/null 2>&1 ; then
         echo "docker not available: $0"
         return 0
     fi
@@ -315,11 +325,11 @@ function main_docker() {
     for os_type in ${!os_type2versions[@]} ; do
         for os_version in ${os_type2versions[$os_type]} ; do
             if $remove ; then
-                remove_all $os_type $os_version || return 1
+                remove_all $os_type $os_version $dockercmd || return 1
             elif $shell ; then
-                run_in_docker $os_type $os_version $ref "$opts" SHELL || return 1
+                run_in_docker $os_type $os_version $ref "$opts" SHELL $dockercmd || return 1
             else
-                run_in_docker $os_type $os_version $ref "$opts" "$@" || return 1
+                run_in_docker $os_type $os_version $ref "$opts" "$@" $dockercmd || return 1
             fi
         done
     done