From 7fea431061f3e6f9b9e107425012886462f4f9e0 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 14 Sep 2021 13:23:26 +0200 Subject: [PATCH] contrib: improve nm-in-container.sh script --- .../nm-in-container.d/data-nm-env-prepare.sh | 19 ++++-- contrib/scripts/nm-in-container.sh | 66 +++++++++++++------ 2 files changed, 58 insertions(+), 27 deletions(-) diff --git a/contrib/scripts/nm-in-container.d/data-nm-env-prepare.sh b/contrib/scripts/nm-in-container.d/data-nm-env-prepare.sh index 5769d1b077..4f84413a2d 100755 --- a/contrib/scripts/nm-in-container.d/data-nm-env-prepare.sh +++ b/contrib/scripts/nm-in-container.d/data-nm-env-prepare.sh @@ -7,7 +7,7 @@ die() { exit 1 } -cleanup() { +do_cleanup() { local IDX="$1" pkill -F "/tmp/nm-dnsmasq-d_$IDX.pid" dnsmasq &>/dev/null || : @@ -21,7 +21,7 @@ cleanup() { ip link del "d_$IDX" &>/dev/null || : } -setup() { +do_setup() { local IDX="$1" cleanup "$IDX" @@ -62,13 +62,20 @@ EOF & } +do_redo() { + cleanup "$1" + setup "$1" +} + +############################################################################### + IDX=1 -CMD= +CMD=redo for (( i=1 ; i<="$#" ; )) ; do c="${@:$i:1}" i=$((i+1)) case "$c" in - setup|cleanup) + redo|setup|cleanup) CMD="$c" ;; --idx|-i) @@ -82,6 +89,4 @@ for (( i=1 ; i<="$#" ; )) ; do esac done -test "$CMD" != "" || die "missing command (setup|cleanup)" - -$CMD "$IDX" +do_$CMD "$IDX" diff --git a/contrib/scripts/nm-in-container.sh b/contrib/scripts/nm-in-container.sh index 536dffd6c3..3e1e55a309 100755 --- a/contrib/scripts/nm-in-container.sh +++ b/contrib/scripts/nm-in-container.sh @@ -2,6 +2,23 @@ set -e +############################################################################### +# Script to create a podman container for testing NetworkManager. +# +# Commands: +# - build: build a new image, named "$CONTAINER_NAME_REPOSITORY:$CONTAINER_NAME_TAG" ("nm:nm") +# - run: start the container and tag it "$CONTAINER_NAME_NAME" ("nm") +# - exec: run bash inside the container +# - stop: stop the container +# - clean: delete the container and the image. +# +# Options: +# --no-cleanup: don't delete the CONTAINERFILE and other artifacts +# --stop: only has effect with "run". It will stop the container afterwards. +# +# It bind mounts the current working directory inside the container. +# You can run `make install` and run tests. +# There is a script nm-env-prepare to generate a net1 interface for testing. ############################################################################### BASE_IMAGE="${BASE_IMAGE:-fedora:latest}" @@ -9,12 +26,23 @@ BASE_IMAGE="${BASE_IMAGE:-fedora:latest}" BASEDIR_NM="$(readlink -f "$(dirname "$(readlink -f "$0")")/../..")" BASEDIR="$BASEDIR_NM/contrib/scripts/nm-in-container.d" -CONTAINER_NAME_REPOSITORY=${CONTAINER_NAME_REPOSITORY:-my} +CONTAINER_NAME_REPOSITORY=${CONTAINER_NAME_REPOSITORY:-nm} CONTAINER_NAME_TAG=${CONTAINER_NAME_TAG:-nm} CONTAINER_NAME_NAME=${CONTAINER_NAME_NAME:-nm} ############################################################################### +usage() { + cat <&2 exit 1 @@ -152,8 +180,8 @@ RUN sed 's/.*RateLimitBurst=.*/RateLimitBurst=0/' /etc/systemd/journald.conf -i RUN echo -e '[logging]\nlevel=TRACE\ndomains=ALL,VPN_PLUGIN:TRACE\n' >> /etc/NetworkManager/conf.d/90-my.conf RUN echo -e '[main]\nno-auto-default=*\ndebug=RLIMIT_CORE,fatal-warnings\n' >> /etc/NetworkManager/conf.d/90-my.conf -RUN echo -e '[device-veths-1]\nmatch-device=interface-name:d_*\nmanaged=0\n' >> /etc/NetworkManager/conf.d/90-my.conf -RUN echo -e '[device-veths-2]\nmatch-device=interface-name:net*\nmanaged=1\n' >> /etc/NetworkManager/conf.d/90-my.conf +RUN echo -e '[device-managed-0]\nmatch-device=interface-name:d_*,interface-name:tap*\nmanaged=0\n' >> /etc/NetworkManager/conf.d/90-my.conf +RUN echo -e '[device-managed-1]\nmatch-device=interface-name:net*\nmanaged=1\n' >> /etc/NetworkManager/conf.d/90-my.conf RUN rm -rf /etc/NetworkManager/system-connections/* @@ -181,14 +209,6 @@ EOF ############################################################################### -usage() { - cat <