tests: Use podman if available

Signed-off-by: Brad Hubbard <bhubbard@redhat.com>
This commit is contained in:
Brad Hubbard 2020-03-20 14:15:14 +10:00
parent 8a84ddeaa8
commit a1e8f61cb7

View File

@ -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