8e5b17cf13
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
45 lines
1,000 B
Bash
Executable file
45 lines
1,000 B
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
if [[ ${DEBUG} -gt 0 ]]; then set -x; fi
|
|
|
|
NETCONFPATH=${NETCONFPATH-/etc/cni/net.d}
|
|
|
|
function exec_plugins() {
|
|
i=0
|
|
contid=$2
|
|
netns=$3
|
|
export CNI_COMMAND=$(echo $1 | tr '[:lower:]' '[:upper:]')
|
|
export PATH=$CNI_PATH:$PATH
|
|
export CNI_CONTAINERID=$contid
|
|
export CNI_NETNS=$netns
|
|
|
|
for netconf in $(echo $NETCONFPATH/*.conf | sort); do
|
|
name=$(jq -r '.name' <$netconf)
|
|
plugin=$(jq -r '.type' <$netconf)
|
|
export CNI_IFNAME=$(printf eth%d $i)
|
|
|
|
res=$($plugin <$netconf)
|
|
if [ $? -ne 0 ]; then
|
|
errmsg=$(echo $res | jq -r '.msg')
|
|
if [ -z "$errmsg" ]; then
|
|
errmsg=$res
|
|
fi
|
|
|
|
echo "${name} : error executing $CNI_COMMAND: $errmsg"
|
|
exit 1
|
|
elif [[ ${DEBUG} -gt 0 ]]; then
|
|
echo ${res} | jq -r .
|
|
fi
|
|
|
|
let "i=i+1"
|
|
done
|
|
}
|
|
|
|
if [ $# -ne 3 ]; then
|
|
echo "Usage: $0 add|del CONTAINER-ID NETNS-PATH"
|
|
echo " Adds or deletes the container specified by NETNS-PATH to the networks"
|
|
echo " specified in \$NETCONFPATH directory"
|
|
exit 1
|
|
fi
|
|
|
|
exec_plugins $1 $2 $3
|