From: Thomas Goirand Date: Thu, 2 Oct 2014 12:02:51 +0000 (+0800) Subject: Added systemd support and log file configuration for each daemon. X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=dfba98678f577fdbe34bd8df200fa42c71f506b1;p=openstack-build%2Fheat-build.git Added systemd support and log file configuration for each daemon. Rewritten-From: c4167eed37eca2952a18a5141993bcca5e9fbfd8 --- diff --git a/xenial/debian/changelog b/xenial/debian/changelog index 5739fa08..98a30902 100644 --- a/xenial/debian/changelog +++ b/xenial/debian/changelog @@ -2,6 +2,8 @@ heat (2014.2~rc1-1) experimental; urgency=medium * New upstream release. * Updated (build-)depends for this release. + * Added log facilities for all daemons. + * Added systemd support. -- Thomas Goirand Thu, 02 Oct 2014 19:01:13 +0800 diff --git a/xenial/debian/control b/xenial/debian/control index c1d0f62d..240df7a9 100644 --- a/xenial/debian/control +++ b/xenial/debian/control @@ -6,6 +6,7 @@ Uploaders: Julien Danjou , Thomas Goirand , Mehdi Abaakouk Build-Depends: debhelper (>= 9), + dh-systemd, openstack-pkg-tools (>= 12~), po-debconf, python-all (>= 2.6.6-3~), diff --git a/xenial/debian/heat-api-cfn.init b/xenial/debian/heat-api-cfn.init index 112c78ee..6a23ec98 100644 --- a/xenial/debian/heat-api-cfn.init +++ b/xenial/debian/heat-api-cfn.init @@ -14,25 +14,33 @@ # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="Heat API" -NAME=heat-api-cfn -DAEMON=/usr/bin/heat-api-cfn -PIDFILE=/var/run/$NAME.pid -SCRIPTNAME=/etc/init.d/$NAME -SYSTEM_USER=heat +PROJECT_NAME=heat +NAME=${PROJECT_NAME}-api-cfn +DAEMON=/usr/bin/${NAME} +DAEMON_ARGS="--config-file=/etc/${PROJECT_NAME}/${PROJECT_NAME}.conf" +PIDFILE=/var/run/${NAME}.pid +SCRIPTNAME=/etc/init.d/${NAME} +SYSTEM_USER=${PROJECT_NAME} +SYSTEM_GROUP=${PROJECT_NAME} +LOCK_DIR=/var/lock/${PROJECT_NAME}/ # Exit if the package is not installed [ -x $DAEMON ] || exit 0 +mkdir -p ${LOCK_DIR} /var/run/${PROJECT_NAME} /var/log/${PROJECT_NAME} +chown ${SYSTEM_USER} ${LOCK_DIR} /var/run/${PROJECT_NAME} /var/log/${PROJECT_NAME} + . /lib/lsb/init-functions -if [ ! -e /var/log/heat ] ; then - mkdir -p /var/log/heat - chown ${SYSTEM_USER} /var/log/heat -fi +[ -r /etc/default/openstack ] && . /etc/default/openstack +[ -r /etc/default/${NAME} ] && . /etc/default/${NAME} + +[ "x$USE_SYSLOG" = "xyes" ] && DAEMON_ARGS="$DAEMON_ARGS --use-syslog" +[ "x$USE_LOGFILE" != "xno" ] && DAEMON_ARGS="$DAEMON_ARGS --log-file=/var/log/${PROJECT_NAME}/${NAME}.log" do_start () { - start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_USER} --make-pidfile --pidfile $PIDFILE --startas $DAEMON --test > /dev/null || return 1 - start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_USER} --make-pidfile --pidfile $PIDFILE --startas $DAEMON || return 2 + start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_GROUP} --make-pidfile --pidfile $PIDFILE --startas $DAEMON --test > /dev/null || return 1 + start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_GROUP} --make-pidfile --pidfile $PIDFILE --startas $DAEMON -- ${DAEMON_ARGS} || return 2 } do_stop () { @@ -43,45 +51,53 @@ do_stop () { } case "$1" in - start) - log_daemon_msg "Starting $DESC" "$NAME" - do_start - case "$?" in - 0|1) log_end_msg 0 ;; - 2) log_end_msg 1 ;; - esac - ;; - stop) - log_daemon_msg "Stopping $DESC" "$NAME" - do_stop - case "$?" in - 0|1) log_end_msg 0 ;; - 2) log_end_msg 1 ;; - esac - ;; - status) - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - restart|force-reload) - log_daemon_msg "Restarting $DESC" "$NAME" - do_stop - case "$?" in - 0|1) - do_start - case "$?" in - 0) log_end_msg 0 ;; - 1) log_end_msg 1 ;; # Old process is still running - *) log_end_msg 1 ;; # Failed to start - esac - ;; - *) - # Failed to stop - log_end_msg 1 - ;; - esac - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 - exit 3 - ;; +start) + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac +;; +stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac +;; +status) + status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? +;; +systemd-start) + do_start +;; +systemd-stop) + do_stop +;; +restart|force-reload) + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac +;; +*) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 +;; esac + +exit 0 diff --git a/xenial/debian/heat-api-cfn.service b/xenial/debian/heat-api-cfn.service new file mode 100644 index 00000000..b62dd249 --- /dev/null +++ b/xenial/debian/heat-api-cfn.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenStack Heat API CFN +Documentation=http://docs.openstack.org/ +After=postgresql.service mysql.service keystone.service rabbitmq-server.service ntp.service network.service + +[Service] +User=heat +Group=heat +ExecStart=/etc/init.d/heat-api-cfn systemd-start +ExecStop=/etc/init.d/heat-api-cfn systemd-stop +PIDFile=/var/run/heat/heat-api-cfn.pid +Restart=on-failure +Type=forking + +[Install] +WantedBy=multi-user.target diff --git a/xenial/debian/heat-api-cloudwatch.init b/xenial/debian/heat-api-cloudwatch.init index f4f4f3e8..05f741bc 100644 --- a/xenial/debian/heat-api-cloudwatch.init +++ b/xenial/debian/heat-api-cloudwatch.init @@ -14,25 +14,33 @@ # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="Heat API" -NAME=heat-api-cloudwatch -DAEMON=/usr/bin/heat-api-cloudwatch -PIDFILE=/var/run/$NAME.pid -SCRIPTNAME=/etc/init.d/$NAME -SYSTEM_USER=heat +PROJECT_NAME=heat +NAME=${PROJECT_NAME}-api-cloudwatch +DAEMON=/usr/bin/${NAME} +DAEMON_ARGS="--config-file=/etc/${PROJECT_NAME}/${PROJECT_NAME}.conf" +PIDFILE=/var/run/${PROJECT_NAME}/${NAME}.pid +SCRIPTNAME=/etc/init.d/${NAME} +SYSTEM_USER=${PROJECT_NAME} +SYSTEM_GROUP=${PROJECT_NAME} +LOCK_DIR=/var/lock/${PROJECT_NAME}/ # Exit if the package is not installed [ -x $DAEMON ] || exit 0 . /lib/lsb/init-functions -if [ ! -e /var/log/heat ] ; then - mkdir -p /var/log/heat - chown ${SYSTEM_USER} /var/log/heat -fi +mkdir -p ${LOCK_DIR} /var/run/${PROJECT_NAME} /var/log/${PROJECT_NAME} +chown ${SYSTEM_USER} ${LOCK_DIR} /var/run/${PROJECT_NAME} /var/log/${PROJECT_NAME} + +[ -r /etc/default/openstack ] && . /etc/default/openstack +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +[ "x$USE_SYSLOG" = "xyes" ] && DAEMON_ARGS="$DAEMON_ARGS --use-syslog" +[ "x$USE_LOGFILE" != "xno" ] && DAEMON_ARGS="$DAEMON_ARGS --log-file=/var/log/${PROJECT_NAME}/${NAME}.log" do_start () { start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_USER} --make-pidfile --pidfile $PIDFILE --startas $DAEMON --test > /dev/null || return 1 - start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_USER} --make-pidfile --pidfile $PIDFILE --startas $DAEMON || return 2 + start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_USER} --make-pidfile --pidfile $PIDFILE --startas $DAEMON -- ${DAEMON_ARGS} || return 2 } do_stop () { @@ -43,45 +51,51 @@ do_stop () { } case "$1" in - start) - log_daemon_msg "Starting $DESC" "$NAME" - do_start - case "$?" in - 0|1) log_end_msg 0 ;; - 2) log_end_msg 1 ;; - esac - ;; - stop) - log_daemon_msg "Stopping $DESC" "$NAME" - do_stop - case "$?" in - 0|1) log_end_msg 0 ;; - 2) log_end_msg 1 ;; - esac - ;; - status) - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - restart|force-reload) +start) + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac +;; +stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac +;; +status) + status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? +;; +systemd-start) + do_start +;; +systemd-stop) + do_stop +;; +restart|force-reload) log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in - 0|1) - do_start - case "$?" in - 0) log_end_msg 0 ;; - 1) log_end_msg 1 ;; # Old process is still running - *) log_end_msg 1 ;; # Failed to start - esac - ;; - *) - # Failed to stop - log_end_msg 1 - ;; - esac - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 - exit 3 - ;; + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac +;; +*) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 +;; esac diff --git a/xenial/debian/heat-api-cloudwatch.service b/xenial/debian/heat-api-cloudwatch.service new file mode 100644 index 00000000..33862350 --- /dev/null +++ b/xenial/debian/heat-api-cloudwatch.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenStack API CloudWatch +Documentation=http://docs.openstack.org/ +After=postgresql.service mysql.service keystone.service rabbitmq-server.service ntp.service network.service + +[Service] +User=heat +Group=heat +ExecStart=/etc/init.d/heat-api-cloudwatch systemd-start +ExecStop=/etc/init.d/heat-api-cloudwatch systemd-stop +PIDFile=/var/run/heat/heat-api-cloudwatch.pid +Restart=on-failure +Type=forking + +[Install] +WantedBy=multi-user.target diff --git a/xenial/debian/heat-api.init b/xenial/debian/heat-api.init index 57d647ec..1af6bb86 100644 --- a/xenial/debian/heat-api.init +++ b/xenial/debian/heat-api.init @@ -14,25 +14,33 @@ # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="Heat API" -NAME=heat-api -DAEMON=/usr/bin/heat-api -PIDFILE=/var/run/$NAME.pid -SCRIPTNAME=/etc/init.d/$NAME -SYSTEM_USER=heat +PROJECT_NAME=heat +NAME=${PROJECT_NAME}-api +DAEMON=/usr/bin/${NAME} +DAEMON_ARGS="--config-file=/etc/${PROJECT_NAME}/${PROJECT_NAME}.conf" +PIDFILE=/var/run/${PROJECT_NAME}/${NAME}.pid +SCRIPTNAME=/etc/init.d/${NAME} +SYSTEM_USER=${PROJECT_NAME} +SYSTEM_GROUP=${PROJECT_NAME} +LOCK_DIR=/var/lock/${PROJECT_NAME}/ # Exit if the package is not installed [ -x $DAEMON ] || exit 0 +mkdir -p ${LOCK_DIR} /var/run/${PROJECT_NAME} /var/log/${PROJECT_NAME} +chown ${SYSTEM_USER} ${LOCK_DIR} /var/run/${PROJECT_NAME} /var/log/${PROJECT_NAME} + . /lib/lsb/init-functions -if [ ! -e /var/log/heat ] ; then - mkdir -p /var/log/heat - chown ${SYSTEM_USER} /var/log/heat -fi +# Manage log options +[ -r /etc/default/openstack ] && . /etc/default/openstack +[ -r /etc/default/$NAME ] && . /etc/default/$NAME +[ "x$USE_SYSLOG" = "xyes" ] && DAEMON_ARGS="$DAEMON_ARGS --use-syslog" +[ "x$USE_LOGFILE" != "xno" ] && DAEMON_ARGS="$DAEMON_ARGS --log-file=/var/log/${PROJECT_NAME}/${NAME}.log" do_start () { start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_USER} --make-pidfile --pidfile $PIDFILE --startas $DAEMON --test > /dev/null || return 1 - start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_USER} --make-pidfile --pidfile $PIDFILE --startas $DAEMON || return 2 + start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_USER} --make-pidfile --pidfile $PIDFILE --startas $DAEMON -- ${DAEMON_ARGS} || return 2 } do_stop () { @@ -43,45 +51,53 @@ do_stop () { } case "$1" in - start) - log_daemon_msg "Starting $DESC" "$NAME" - do_start - case "$?" in - 0|1) log_end_msg 0 ;; - 2) log_end_msg 1 ;; - esac - ;; - stop) - log_daemon_msg "Stopping $DESC" "$NAME" - do_stop - case "$?" in - 0|1) log_end_msg 0 ;; - 2) log_end_msg 1 ;; - esac - ;; - status) - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - restart|force-reload) - log_daemon_msg "Restarting $DESC" "$NAME" - do_stop - case "$?" in - 0|1) - do_start - case "$?" in - 0) log_end_msg 0 ;; - 1) log_end_msg 1 ;; # Old process is still running - *) log_end_msg 1 ;; # Failed to start - esac - ;; - *) - # Failed to stop - log_end_msg 1 - ;; - esac - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 - exit 3 - ;; +start) + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac +;; +stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac +;; +status) + status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? +;; +systemd-start) + do_start +;; +systemd-stop) + do_stop +;; +restart|force-reload) + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac +;; +*) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 +;; esac + +exit 0 diff --git a/xenial/debian/heat-api.service b/xenial/debian/heat-api.service new file mode 100644 index 00000000..9c14adc1 --- /dev/null +++ b/xenial/debian/heat-api.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenStack Heat API +Documentation=http://docs.openstack.org/ +After=postgresql.service mysql.service keystone.service rabbitmq-server.service ntp.service network.service + +[Service] +User=heat +Group=heat +ExecStart=/etc/init.d/heat-api systemd-start +ExecStop=/etc/init.d/heat-api systemd-stop +PIDFile=/var/run/heat/heat-api.pid +Restart=on-failure +Type=forking + +[Install] +WantedBy=multi-user.target diff --git a/xenial/debian/heat-engine.init b/xenial/debian/heat-engine.init index ba201d7e..45de659a 100644 --- a/xenial/debian/heat-engine.init +++ b/xenial/debian/heat-engine.init @@ -14,25 +14,33 @@ # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="Heat Engine" -NAME=heat-engine -DAEMON=/usr/bin/heat-engine -PIDFILE=/var/run/$NAME.pid -SCRIPTNAME=/etc/init.d/$NAME -SYSTEM_USER=heat +PROJECT_NAME=heat +NAME=${PROJECT_NAME}-engine +DAEMON=/usr/bin/${NAME} +DAEMON_ARGS="--config-file=/etc/${PROJECT_NAME}/${PROJECT_NAME}.conf" +PIDFILE=/var/run/${PROJECT_NAME}/${NAME}.pid +SCRIPTNAME=/etc/init.d/${NAME} +SYSTEM_USER=${PROJECT_NAME} +SYSTEM_GROUP=${PROJECT_NAME} +LOCK_DIR=/var/lock/${PROJECT_NAME}/ # Exit if the package is not installed [ -x $DAEMON ] || exit 0 +mkdir -p ${LOCK_DIR} /var/run/${PROJECT_NAME} /var/log/${PROJECT_NAME} +chown ${SYSTEM_USER} ${LOCK_DIR} /var/run/${PROJECT_NAME} /var/log/${PROJECT_NAME} + . /lib/lsb/init-functions -if [ ! -e /var/log/heat ] ; then - mkdir -p /var/log/heat - chown ${SYSTEM_USER} /var/log/heat -fi +# Manage log options +[ -r /etc/default/openstack ] && . /etc/default/openstack +[ -r /etc/default/$NAME ] && . /etc/default/$NAME +[ "x$USE_SYSLOG" = "xyes" ] && DAEMON_ARGS="$DAEMON_ARGS --use-syslog" +[ "x$USE_LOGFILE" != "xno" ] && DAEMON_ARGS="$DAEMON_ARGS --log-file=/var/log/${PROJECT_NAME}/${NAME}.log" do_start () { start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_USER} --make-pidfile --pidfile $PIDFILE --startas $DAEMON --test > /dev/null || return 1 - start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_USER} --make-pidfile --pidfile $PIDFILE --startas $DAEMON || return 2 + start-stop-daemon --start --background --quiet --chuid ${SYSTEM_USER}:${SYSTEM_USER} --make-pidfile --pidfile $PIDFILE --startas $DAEMON -- ${DAEMON_ARGS} || return 2 } do_stop () { @@ -43,45 +51,51 @@ do_stop () { } case "$1" in - start) - log_daemon_msg "Starting $DESC" "$NAME" - do_start - case "$?" in - 0|1) log_end_msg 0 ;; - 2) log_end_msg 1 ;; - esac - ;; - stop) - log_daemon_msg "Stopping $DESC" "$NAME" - do_stop - case "$?" in - 0|1) log_end_msg 0 ;; - 2) log_end_msg 1 ;; - esac - ;; - status) - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - restart|force-reload) - log_daemon_msg "Restarting $DESC" "$NAME" +start) + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac +;; +stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac +;; +status) + status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? +;; +systemd-start) + do_start +;; +systemd-stop) do_stop - case "$?" in - 0|1) - do_start - case "$?" in - 0) log_end_msg 0 ;; - 1) log_end_msg 1 ;; # Old process is still running - *) log_end_msg 1 ;; # Failed to start - esac - ;; - *) - # Failed to stop - log_end_msg 1 - ;; - esac - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 - exit 3 - ;; +;; +restart|force-reload) + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac +;; +*) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 +;; esac diff --git a/xenial/debian/heat-engine.service b/xenial/debian/heat-engine.service new file mode 100644 index 00000000..8af82acc --- /dev/null +++ b/xenial/debian/heat-engine.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenStack Heat Engine +Documentation=http://docs.openstack.org/ +After=postgresql.service mysql.service keystone.service rabbitmq-server.service ntp.service network.service + +[Service] +User=heat +Group=heat +ExecStart=/etc/init.d/heat-engine systemd-start +ExecStop=/etc/init.d/heat-engine systemd-stop +PIDFile=/var/run/heat/heat-engine.pid +Restart=on-failure +Type=forking + +[Install] +WantedBy=multi-user.target