diff --git a/files/debs/general b/files/debs/general index 20490c6072..1dde03b7fe 100644 --- a/files/debs/general +++ b/files/debs/general @@ -17,6 +17,7 @@ libjpeg-dev # Pillow 3.0.0 libmysqlclient-dev # MySQL-python libpq-dev # psycopg2 libssl-dev # for pyOpenSSL +libsystemd-dev # for systemd-python libxml2-dev # lxml libxslt1-dev # lxml libyaml-dev @@ -26,10 +27,8 @@ openssl pkg-config psmisc python2.7 -python3-systemd python-dev python-gdbm # needed for testr -python-systemd screen tar tcpdump diff --git a/files/rpms/general b/files/rpms/general index 106aa6ae88..1393d18328 100644 --- a/files/rpms/general +++ b/files/rpms/general @@ -29,7 +29,7 @@ pyOpenSSL # version in pip uses too much memory python-devel redhat-rpm-config # missing dep for gcc hardening flags, see rhbz#1217376 screen -systemd-python +systemd-devel # for systemd-python tar tcpdump unzip diff --git a/functions-common b/functions-common index 35b48603c5..65c38a58eb 100644 --- a/functions-common +++ b/functions-common @@ -1495,22 +1495,6 @@ function _run_under_systemd { $SYSTEMCTL enable $systemd_service $SYSTEMCTL start $systemd_service - _journal_log $service $systemd_service -} - -function _journal_log { - local service=$1 - local unit=$2 - local logfile="${service}.log.${CURRENT_LOG_TIME}" - local real_logfile="${LOGDIR}/${logfile}" - if [[ -n ${LOGDIR} ]]; then - $JOURNALCTL_F $2 > "$real_logfile" & - bash -c "cd '$LOGDIR' && ln -sf '$logfile' ${service}.log" - if [[ -n ${SCREEN_LOGDIR} ]]; then - # Drop the backward-compat symlink - ln -sf "$real_logfile" ${SCREEN_LOGDIR}/screen-${service}.log - fi - fi } # Helper to remove the ``*.failure`` files under ``$SERVICE_DIR/$SCREEN_NAME``. @@ -1700,8 +1684,10 @@ function stop_process { # Only do this for units which appear enabled, this also # catches units that don't really exist for cases like # keystone without a failure. - $SYSTEMCTL stop devstack@$service.service - $SYSTEMCTL disable devstack@$service.service + if $SYSTEMCTL is-enabled devstack@$service.service; then + $SYSTEMCTL stop devstack@$service.service + $SYSTEMCTL disable devstack@$service.service + fi fi if [[ -r $SERVICE_DIR/$SCREEN_NAME/$service.pid ]]; then diff --git a/stack.sh b/stack.sh index 31ea2e1112..8864a18d4f 100755 --- a/stack.sh +++ b/stack.sh @@ -746,6 +746,9 @@ fi # Do the ugly hacks for broken packages and distros source $TOP_DIR/tools/fixup_stuff.sh +if [[ "$USE_SYSTEMD" == "True" ]]; then + pip_install_gr systemd-python +fi # Virtual Environment # ------------------- diff --git a/stackrc b/stackrc index ed1cf6e074..6ff9585984 100644 --- a/stackrc +++ b/stackrc @@ -157,6 +157,15 @@ elif [[ -f $RC_DIR/.localrc.auto ]]; then source $RC_DIR/.localrc.auto fi +# if we are forcing off USE_SCREEN (as we do in the gate), force on +# systemd. This allows us to drop one of 3 paths through the code. +if [[ "$USE_SCREEN" == "False" ]]; then + # Remove in Pike: this gets us through grenade upgrade + if [[ "$GRENADE_PHASE" != "target" ]]; then + USE_SYSTEMD="True" + fi +fi + # Default for log coloring is based on interactive-or-not. # Baseline assumption is that non-interactive invocations are for CI, # where logs are to be presented as browsable text files; hence color