Add os-svc-restart

Add os-svc-restart, a helper script to restart a service. It uses
map-services to figure out the actual service name, as the service name
can differ based on the distro being used and also if installing from
source or packages.  Currently, only if the init system is systemd will
a call out to map-services be done. This matches the pattern from
install-packages where map-packages is not used on dpkg systems since
those package names are used as the default in the source install
scripts.

Having a helper script will avoid the proliferation of the following
pattern everywhere:

service foo restart || service foo-by-another-name restart

This also significantly reduces errors in the log due to the above,
which can be misleading.

Depends on Change-Id: Ie7b2dcfa7cabd887d5c212df110d90f9d00a7f65

Change-Id: I15eb2a5db4b0a08e1fb40bda640cd8f224939a92
This commit is contained in:
James Slagle 2014-01-20 07:49:39 -05:00
parent fc681391ef
commit 5015d43116
2 changed files with 62 additions and 1 deletions

View File

@ -49,7 +49,7 @@ function enable_upstart_service {
function enable_systemd_service {
local name=$1
systemctl enable $name.service
systemctl enable $(map-services $name).service
}
# TODO: SysV init fallback support

View File

@ -0,0 +1,61 @@
#!/bin/bash
#
# Copyright 2013 Red Hat, Inc.
# All Rights Reserved.
#
# 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.
set -eu
usage() {
echo "Usage: os-svc-restart -n SERVICENAME"
echo ""
echo " -h Show help and exit"
echo " -n SERVICENAME Name of job/service file."
echo ""
}
SERVICENAME=${SERVICENAME:-""}
nshift=0
while getopts "hn:" opt; do
case "$opt" in
n) SERVICENAME=$OPTARG;;
h) usage; exit 0;;
\?) usage; exit 1;;
:) usage; exit 1;;
esac
done
shift $(($OPTIND-1))
if [ -z "$SERVICENAME" ] ; then
usage
fi
function restart_upstart_service {
local name=$1
service $name restart
}
function restart_systemd_service {
local name=$1
systemctl restart $(map-services $name).service
}
# TODO: SysV init fallback support
DIB_INIT_SYSTEM=$(dib-init-system)
if [ "$DIB_INIT_SYSTEM" == "upstart" ]; then
restart_upstart_service $SERVICENAME
elif [ "$DIB_INIT_SYSTEM" == "systemd" ]; then
restart_systemd_service $SERVICENAME
fi