Merge "Allow os-svc-daemon to specify dir name with -d option"

This commit is contained in:
Jenkins 2014-03-27 14:58:27 +00:00 committed by Gerrit Code Review
commit c6e922197a
5 changed files with 40 additions and 24 deletions

View File

@ -4,4 +4,4 @@ set -eux
install-packages openstack-neutron
os-svc-daemon -i "$NEUTRON_VENV_DIR" -n neutron-dhcp-agent -u neutron -c noop -d
os-svc-daemon -i "$NEUTRON_VENV_DIR" -n neutron-dhcp-agent -u neutron

View File

@ -4,4 +4,4 @@ set -eux
install-packages openstack-neutron-openvswitch
os-svc-daemon -n neutron-openvswitch-agent -u neutron -c noop -d
os-svc-daemon -n neutron-openvswitch-agent -u neutron

View File

@ -14,4 +14,4 @@ if [[ "RedHatEnterpriseServer CentOS Fedora" =~ "$DISTRO" ]]; then
# https://bugzilla.redhat.com/show_bug.cgi?id=1057615
rm -f /usr/lib/python2.7/site-packages/neutron-*.egg-info/requires.txt
fi
os-svc-daemon -i "$NEUTRON_VENV_DIR" -n neutron-server -u neutron -c noop -d
os-svc-daemon -i "$NEUTRON_VENV_DIR" -n neutron-server -u neutron

View File

@ -11,4 +11,4 @@ install-packages openstack-nova-compute
rm -f /etc/libvirt/qemu/networks/autostart/default.xml
rm -f /etc/libvirt/qemu/networks/default.xml
os-svc-daemon -i "$NOVA_VENV_DIR" -n nova-compute -u nova -c noop -d
os-svc-daemon -i "$NOVA_VENV_DIR" -n nova-compute -u nova

View File

@ -4,7 +4,7 @@ set -eu
DEFAULT_POSTSTART="exec sleep 1"
usage() {
echo "Usage: os-svc-daemon [ -ph ] [ -s POSTSTART ] [ -e ENV ] -n SERVICENAME -u RUNAS -c RUNCMD -- [arg [arg...]]"
echo "Usage: os-svc-daemon [ -ph ] [ -s POSTSTART ] [ -e ENV ] -n SERVICENAME -u RUNAS [ -c RUNCMD -- [arg [arg...]]]"
echo ""
echo "SERVICENAME, RUNAS, RUNCMD, and POSTSTART can be set via the"
echo "environment as well. Command line arguments will override"
@ -12,8 +12,8 @@ usage() {
echo ""
echo " -h Show help and exit"
echo " -p Print the job file instead of writing to disk"
echo " -d Only create the systemd service that creates the run time directory,"
echo " not the actual systemd daemon service. Ignored for upstart."
echo " -d [NAME] Specify the name of the runtime directory, which will be"
echo " /var/run/[NAME]"
echo " -s POSTSTART post_start will be added to the upstart job. Ignored with systemd."
echo " default: $DEFAULT_POSTSTART"
echo " -e ENV Environment name=value entries to set in the service/job"
@ -31,7 +31,7 @@ INSTALLDIR=
RUNAS=${RUNAS:-""}
RUNCMD=${RUNCMD:-""}
ENV=${ENV:-""}
CREATE_DIR_ONLY=${CREATE_DIR_ONLY:-""}
CREATE_DIR_NAME=${CREATE_DIR_NAME:-""}
# The default helps avoid race with daemon listening. http://pad.lv/1179766
POSTSTART=${POSTSTART:-$DEFAULT_POSTSTART}
@ -43,10 +43,15 @@ print_to_file() {
cat > $1
}
append_to_file() {
cat >> $1
}
OUTPUT=print_to_file
APPEND=append_to_file
nshift=0
while getopts "phds:n:i:u:c:e:" opt; do
while getopts "phd:s:n:i:u:c:e:" opt; do
case "$opt" in
n) SERVICENAME=$OPTARG;;
i) INSTALLDIR=$OPTARG;;
@ -54,8 +59,8 @@ while getopts "phds:n:i:u:c:e:" opt; do
c) RUNCMD=$OPTARG;;
s) POSTSTART=$OPTARG;;
e) ENV=$OPTARG;;
p) OUTPUT=print_only;;
d) CREATE_DIR_ONLY=1;;
p) OUTPUT=print_only; APPEND=print_only;;
d) CREATE_DIR_NAME=$OPTARG;;
h) usage; exit 0;;
\?) usage; exit 1;;
:) usage; exit 1;;
@ -63,7 +68,7 @@ while getopts "phds:n:i:u:c:e:" opt; do
done
shift $(($OPTIND-1))
if [ -z "$SERVICENAME" ] || [ -z "$RUNAS" ] || [ -z "$RUNCMD" ] ; then
if [ -z "$SERVICENAME" ] || [ -z "$RUNAS" ] ; then
if [ $# -lt 3 ] ; then
usage
exit 1
@ -73,7 +78,10 @@ fi
# Compatibility with old style passing w/o switches
[ -n "$SERVICENAME" ] || { SERVICENAME=$1 ; shift; }
[ -n "$RUNAS" ] || { RUNAS=$1 ; shift; }
[ -n "$RUNCMD" ] || { RUNCMD=$1 ; shift; }
if [ -z "$RUNCMD" ]; then
CHECK=${1:-""}
[ -n "$CHECK" ] && { RUNCMD=$1 ; shift; }
fi
# if INSTALLDIR isn't set use /opt/stack/venvs/RUNAS
# NOTE: this was our default before adding the -i option
@ -85,8 +93,9 @@ function install_upstart {
local name=$1
local install_dir=$2
local user=$3
local cmd=$4
shift; shift; shift; shift;
local dirname=${4:-$user}
local cmd=$5
shift; shift; shift; shift; shift
local args=$*
local env_entries=''
@ -95,8 +104,9 @@ function install_upstart {
env_entries=${env_pad// /
env }
fi
local target_file="/etc/init/$name.conf"
$OUTPUT /etc/init/$name.conf <<EOF
$OUTPUT $target_file <<EOF
start on runlevel [2345]
stop on runlevel [016]
$env_entries
@ -105,9 +115,13 @@ env OS_SVC_ENABLE_CONTROL=1
export OS_SVC_ENABLE_CONTROL
pre-start script
mkdir -p /var/run/$user
chown -R $user:$user /var/run/$user
mkdir -p /var/run/$dirname
chown -R $user:$user /var/run/$dirname
end script
EOF
if [ -n "$cmd" ]; then
$APPEND $target_file <<EOF
respawn
# the default post-start of 1 second sleep delays respawning enough to
@ -118,6 +132,7 @@ exec start-stop-daemon --start -c $user --exec $install_dir/bin/$cmd -- $args
post-start $POSTSTART
EOF
fi
}
function install_systemd {
@ -156,14 +171,15 @@ EOF
function install_create_dir_systemd {
local name=$(map-services $1)
local user=$2
local dirname=${3:-$user}
$OUTPUT /usr/lib/systemd/system/$name-create-dir.service <<EOF
[Unit]
Description=Create /var/run/$user
Description=Create /var/run/$dirname
[Service]
ExecStartPre=/bin/mkdir -p /var/run/$user
ExecStart=/bin/chown -R $user:$user /var/run/$user
ExecStartPre=/bin/mkdir -p /var/run/$dirname
ExecStart=/bin/chown -R $user:$user /var/run/$dirname
[Install]
RequiredBy=$name.service
@ -174,13 +190,13 @@ EOF
# TODO: SysV init fallback support
DIB_INIT_SYSTEM=$(dib-init-system)
if [ "$DIB_INIT_SYSTEM" == "upstart" ]; then
install_upstart $SERVICENAME $INSTALLDIR $RUNAS $RUNCMD $*
install_upstart $SERVICENAME $INSTALLDIR $RUNAS "$CREATE_DIR_NAME" "$RUNCMD" $*
elif [ "$DIB_INIT_SYSTEM" == "systemd" ]; then
if [ "$POSTSTART" != "$DEFAULT_POSTSTART" ] ; then
echo "WARNING: post start is ignored with systemd." >&2
fi
if [ -z "$CREATE_DIR_ONLY" ]; then
if [ -n "$RUNCMD" ]; then
install_systemd $SERVICENAME $INSTALLDIR $RUNAS $RUNCMD $*
fi
install_create_dir_systemd $SERVICENAME $RUNAS
install_create_dir_systemd $SERVICENAME $RUNAS $CREATE_DIR_NAME
fi