- centos - fedora - ubuntu - debian Signed-off-by: Roberto Gandolfo Hashioka <roberto_hashioka@hotmail.com> Upstream-commit: ceac22bf2240df483b1d3bd3a19ac681e665f910 Component: packaging
67 lines
2.8 KiB
Bash
Executable File
67 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
BASE=/var/lib/docker
|
|
TAR_DIR=$BASE/plugins/tar
|
|
|
|
# make sure that the directory exists
|
|
mkdir -p $TAR_DIR
|
|
|
|
# Create the engine UUID, if it doesn't exist
|
|
# This will be eventually handled by the docker engine
|
|
# ref. https://github.com/moby/moby/issues/33356
|
|
if [ -f $BASE/engine_uuid ]; then
|
|
UUID=$(cat $BASE/engine_uuid)
|
|
fi
|
|
if [ -z ${UUID+x} ]; then
|
|
UUID=$(cat /proc/sys/kernel/random/uuid | tee $BASE/engine_uuid)
|
|
fi
|
|
|
|
# make sure that docker is running
|
|
if ! printf "%s" "$DOCKER_OPTS" | grep -qE -e '-H|--host'; then
|
|
DOCKER_SOCKET=/var/run/docker.sock
|
|
else
|
|
DOCKER_SOCKET=$(printf "%s" "$DOCKER_OPTS" | grep -oP -e '(-H|--host)\W*unix://\K(\S+)' | sed 1q)
|
|
fi
|
|
|
|
if [ -n "$DOCKER_SOCKET" ]; then
|
|
while ! [ -e "$DOCKER_SOCKET" ]; do
|
|
sleep 0.1
|
|
done
|
|
fi
|
|
|
|
# store the metrics plugin state
|
|
plugin_name=$(docker plugin ls | grep docker/telemetry | awk 'NR==1{print $2}')
|
|
plugin_metadata=$TAR_DIR/.plugin-metadata
|
|
if docker inspect $plugin_name > /dev/null 2>&1; then
|
|
plugin_state=$(docker plugin inspect $plugin_name | grep -o '"Enabled":.*' | sed 's/,/\\\}/g' | sed 's/ //g')
|
|
# remove previous plugin state
|
|
sed -i 's/,"Enabled":.*/\}/g' $plugin_metadata
|
|
# add new plugin state
|
|
sed -i "s/\}/,$plugin_state/g" $plugin_metadata
|
|
fi
|
|
|
|
# find plugin_name based on the tarball
|
|
plugin_filename=$(ls $TAR_DIR/)
|
|
plugin_tag=$(echo $plugin_filename | cut -d"_" -f2-)
|
|
plugin_tag=${plugin_tag%.tgz}
|
|
plugin_name=docker/telemetry:$plugin_tag
|
|
# install/upgrade telemetry plugin in case it's not present (ignore stdout/stderror)
|
|
if ! docker inspect $plugin_name > /dev/null 2>&1; then
|
|
# remove old plugin versions
|
|
docker plugin rm -f `docker plugin ls | grep docker/telemetry | awk '{print $2}'` > /dev/null 2>&1
|
|
# create new plugin (disabled by default)
|
|
cd $TAR_DIR/ && tar -zxf $plugin_filename -C /tmp
|
|
docker plugin create $plugin_name /tmp/plugin > /dev/null 2>&1
|
|
rm -rf /tmp/plugin
|
|
# extract all the edition variables, including the engine uuid
|
|
uuid=$(cat /var/lib/docker/engine_uuid)
|
|
edition_version=$(cat $plugin_metadata | sed 's/{.*edition_version":"*\([0-9a-zA-Z.]*\)"*,*.*}/\1/')
|
|
edition_type=$(cat $plugin_metadata | sed 's/{.*edition_type":"*\([0-9a-zA-Z.]*\)"*,*.*}/\1/')
|
|
edition_name=$(cat $plugin_metadata | sed 's/{.*edition_name":"*\([0-9a-zA-Z.]*\)"*,*.*}/\1/')
|
|
docker plugin set $plugin_name edition_name=$edition_name edition_type=$edition_type edition_version=$edition_version anonymous_id=$uuid > /dev/null 2>&1
|
|
# set the metrics plugin to its previous state
|
|
if grep 'true' $plugin_metadata > /dev/null 2>&1 ; then
|
|
docker plugin enable $plugin_name > /dev/null 2>&1
|
|
fi
|
|
fi
|