kuryr-libnetwork/scripts/run_kuryr.sh

110 lines
3.9 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
KURYR_HOME=${KURYR_HOME:-.}
KURYR_JSON_FILENAME=kuryr.json
KURYR_DEFAULT_JSON=${KURYR_HOME}/etc/${KURYR_JSON_FILENAME}
# See libnetwork's plugin discovery mechanism:
# https://github.com/docker/docker/blob/c4d45b6a29a91f2fb5d7a51ac36572f2a9b295c6/docs/extend/plugin_api.md#plugin-discovery
KURYR_JSON_DIR=${KURYR_JSON_DIR:-/usr/lib/docker/plugins/kuryr}
KURYR_JSON=${KURYR_JSON_DIR}/${KURYR_JSON_FILENAME}
KURYR_CONFIG_FILENAME=kuryr.conf
KURYR_DEFAULT_CONFIG=${KURYR_HOME}/etc/${KURYR_CONFIG_FILENAME}
KURYR_CONFIG_DIR=${KURYR_CONFIG_DIR:-/etc/kuryr}
KURYR_CONFIG=${KURYR_CONFIG_DIR}/${KURYR_CONFIG_FILENAME}
SSL_ENABLED=${SSL_ENABLED:-False}
KURYR_SSL_ENABLED_JSON=${KURYR_HOME}/contrib/tls/${KURYR_JSON_FILENAME}
if [[ ! -d "${KURYR_JSON_DIR}" ]]; then
echo -n "${KURYR_JSON_DIR} directory is missing. Creating it... "
sudo mkdir -p ${KURYR_JSON_DIR}
echo "Done"
fi
if [ "$SSL_ENABLED" == "True" ]; then
echo -n "Copying ${KURYR_SSL_ENABLED_JSON} one... "
sudo cp ${KURYR_SSL_ENABLED_JSON} ${KURYR_JSON}
fi
if [[ ! -f "${KURYR_JSON}" ]]; then
echo -n "${KURYR_JSON} is missing. Copying the ssl enabled one... "
sudo cp ${KURYR_DEFAULT_JSON} ${KURYR_JSON}
echo "Done"
fi
if [[ ! -d "${KURYR_CONFIG_DIR}" ]]; then
echo -n "${KURYR_CONFIG_DIR} directory is missing. Creating it... "
sudo mkdir -p ${KURYR_CONFIG_DIR}
echo "Done"
fi
if [[ ! -f "${KURYR_CONFIG}" ]]; then
if [[ -f "${KURYR_DEFAULT_CONFIG}" ]]; then
echo -n "${KURYR_CONFIG} is missing. Copying the default one... "
sudo cp ${KURYR_DEFAULT_CONFIG} ${KURYR_CONFIG}
else
if [ "$SSL_ENABLED" == "True" ];then
# To Avoid tls compatible Config file and json file mismatch it would be
# better to raise an error than to continue with corrupt env.
echo "Please check configuration for Tls.."
echo "Aborting"
exit 1
else
echo -n "${KURYR_CONFIG} and the default config missing. Auto generating and copying one... "
cd ${KURYR_HOME}
tox -egenconfig
sudo cp ${KURYR_DEFAULT_CONFIG}.sample ${KURYR_DEFAULT_CONFIG}
sudo cp ${KURYR_DEFAULT_CONFIG} ${KURYR_CONFIG}
fi
fi
echo "Done"
fi
KURYR_USE_UWSGI=${KURYR_USE_UWSGI:-True}
KURYR_UWSGI_PROCESSES=${KURYR_UWSGI_PROCESSES:-1}
KURYR_UWSGI_THREADS=${KURYR_UWSGI_THREADS:-1}
UWSGI_BIN=$(which uwsgi)
if [[ -z "UWSGI_BIN" && $KURYR_USE_UWSGI == "True" ]]; then
echo "Requested uwsgi usage, but no uwsgi executable is available. Falling back to run_server.py"
echo "To suppress this message set KURYR_USE_UWSGI to False"
KURYR_USE_UWSGI="False"
fi
UWSGI_ADDITIONAL_ARGS=()
if [[ $KURYR_USE_UWSGI == "True" ]]; then
if [[ "$VIRTUAL_ENV" ]]; then
UWSGI_ADDITIONAL_ARGS=( --virtualenv $VIRTUAL_ENV )
fi
echo "Starting uwsgi with ${KURYR_UWSGI_PROCESSES} processes and ${KURYR_UWSGI_THREADS} threads"
$UWSGI_BIN \
--plugins python \
--http-socket :23750 \
--wsgi kuryr_libnetwork.server:app \
--python-path "${KURYR_HOME}" \
--pyargv "--config-file ${KURYR_CONFIG}" \
--master \
--need-app \
--processes "$KURYR_UWSGI_PROCESSES" \
--threads "$KURYR_UWSGI_THREADS" \
"${UWSGI_ADDITIONAL_ARGS[@]}"
else
PYTHONPATH="${KURYR_HOME}" python "${KURYR_HOME}/scripts/run_server.py" --config-file "${KURYR_CONFIG}" "$@"
fi