Merge "systemd: Always create the systemd unit files"

This commit is contained in:
Jenkins 2017-06-14 07:50:37 +00:00 committed by Gerrit Code Review
commit 29215d95c7
2 changed files with 24 additions and 6 deletions

View File

@ -125,6 +125,13 @@ if [[ -n "$SCREEN_LOGDIR" ]] && [[ -d "$SCREEN_LOGDIR" ]]; then
sudo rm -rf $SCREEN_LOGDIR
fi
# Clean out the sytemd user unit files if systemd was used.
if [[ "$USE_SYSTEMD" = "True" ]]; then
sudo find $SYSTEMD_DIR -type f -name '*devstack@*service' -delete
# Make systemd aware of the deletion.
$SYSTEMCTL daemon-reload
fi
# Clean up venvs
DIRS_TO_CLEAN="$WHEELHOUSE ${PROJECT_VENV[@]} .config/openstack"
rm -rf $DIRS_TO_CLEAN

View File

@ -1508,8 +1508,13 @@ EOF
}
# Helper function to build a basic unit file and run it under systemd.
function _run_under_systemd {
# Defines a systemd service which can be enabled and started later on.
# arg1: The openstack service name ('n-cpu', 'c-sch', ...).
# arg2: The command to start (e.g. path to service binary + config files).
# arg3: The group which owns the process.
# arg4: The user which owns the process.
# Returns: The systemd service name which got defined.
function _define_systemd_service {
local service=$1
local command="$2"
local cmd=$command
@ -1524,9 +1529,7 @@ function _run_under_systemd {
else
write_user_unit_file $systemd_service "$cmd" "$group" "$user"
fi
$SYSTEMCTL enable $systemd_service
$SYSTEMCTL start $systemd_service
echo $systemd_service
}
# Helper to remove the ``*.failure`` files under ``$SERVICE_DIR/$SCREEN_NAME``.
@ -1567,11 +1570,19 @@ function run_process {
local user=$4
local name=$service
local systemd_service
time_start "run_process"
# Note we deliberately make all service files, even if the service
# isn't enabled, so it can be enabled by a dev manually on command
# line.
if [[ "$USE_SYSTEMD" = "True" ]]; then
systemd_service=$(_define_systemd_service "$name" "$command" "$group" "$user")
fi
if is_service_enabled $service; then
if [[ "$USE_SYSTEMD" = "True" ]]; then
_run_under_systemd "$name" "$command" "$group" "$user"
$SYSTEMCTL enable $systemd_service
$SYSTEMCTL start $systemd_service
elif [[ "$USE_SCREEN" = "True" ]]; then
if [[ "$user" == "root" ]]; then
command="sudo $command"