Alon Bar-Lev has uploaded a new change for review. Change subject: packaging: use service infra from ovirt-engine-lib ......................................................................
packaging: use service infra from ovirt-engine-lib Change-Id: Ic506d6962f8ccfc9bb7538484aee2867491d8b20 Signed-off-by: Alon Bar-Lev <alon.bar...@gmail.com> --- M .gitignore M Makefile M ovirt-engine-dwh.spec.in D packaging/bin/etl-common-functions.sh.in D packaging/bin/history_service.sh.in A packaging/services/ovirt-engine-dwhd/__init__.py A packaging/services/ovirt-engine-dwhd/config.py.in A packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.conf.in A packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.py A packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.systemd.in M packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.sysv.in A packaging/services/ovirt-engine-dwhd/ovirt_engine_dwh_watchdog.cron.in D packaging/sys-etc/cron.hourly/ovirt_engine_dwh_watchdog.cron.in 13 files changed, 361 insertions(+), 258 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-dwh refs/changes/45/22445/1 diff --git a/.gitignore b/.gitignore index a631fb7..f09c135 100644 --- a/.gitignore +++ b/.gitignore @@ -3,10 +3,11 @@ build/python-check.sh ovirt-engine-dwh.spec -packaging/bin/etl-common-functions.sh -packaging/bin/history_service.sh packaging/etc/ovirt-engine-dwhd-log4j.xml packaging/etc/ovirt-engine-dwhd.conf.d/README +packaging/services/ovirt-engine-dwhd/config.py +packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.conf +packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.systemd packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.sysv -packaging/sys-etc/cron.hourly/ovirt_engine_dwh_watchdog.cron +packaging/services/ovirt-engine-dwhd/ovirt_engine_dwh_watchdog.cron packaging/sys-etc/logrotate.d/ovirt-engine-dwhd diff --git a/Makefile b/Makefile index c1447de..e33be34 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ # BUILD_UT=1 EXTRA_BUILD_FLAGS= -BUILD_VALIDATION=0 +BUILD_VALIDATION=1 PACKAGE_NAME=ovirt-engine-dwh MVN=mvn @@ -37,7 +37,6 @@ PREFIX=/usr/local LOCALSTATE_DIR=$(PREFIX)/var BIN_DIR=$(PREFIX)/bin -PID_DIR=$(LOCALSTATE_DIR)/run SYSCONF_DIR=$(PREFIX)/etc DATAROOT_DIR=$(PREFIX)/share MAN_DIR=$(DATAROOT_DIR)/man @@ -104,8 +103,9 @@ -e "s|@PKG_LOG_DIR@|$(PKG_LOG_DIR)|g" \ -e "s|@PKG_STATE_DIR@|$(PKG_STATE_DIR)|g" \ -e "s|@PKG_JBOSS_MODULES@|$(PKG_JBOSS_MODULES)|g" \ - -e "s|@DWH_PID@|$(PID_DIR)/ovirt-engine-dwh.pid|g" \ -e "s|@JBOSS_HOME@|$(JBOSS_HOME)|g" \ + -e "s|@DEV_PYTHON_DIR@|$(DEV_PYTHON_DIR)|g" \ + -e "s|@DWH_VARS@|$(PKG_SYSCONF_DIR)/ovirt-engine-dwhd.conf|g" \ -e "s|@RPM_VERSION@|$(RPM_VERSION)|g" \ -e "s|@RPM_RELEASE@|$(RPM_RELEASE)|g" \ -e "s|@PACKAGE_NAME@|$(PACKAGE_NAME)|g" \ @@ -118,12 +118,13 @@ GENERATED = \ build/python-check.sh \ ovirt-engine-dwh.spec \ - packaging/bin/etl-common-functions.sh \ - packaging/bin/history_service.sh \ packaging/etc/ovirt-engine-dwhd-log4j.xml \ packaging/etc/ovirt-engine-dwhd.conf.d/README \ + packaging/services/ovirt-engine-dwhd/config.py \ + packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.conf \ + packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.systemd \ packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.sysv \ - packaging/sys-etc/cron.hourly/ovirt_engine_dwh_watchdog.cron \ + packaging/services/ovirt-engine-dwhd/ovirt_engine_dwh_watchdog.cron \ packaging/sys-etc/logrotate.d/ovirt-engine-dwhd \ $(NULL) @@ -135,9 +136,8 @@ generated-files: $(GENERATED) chmod a+x build/python-check.sh - chmod a+x packaging/bin/history_service.sh chmod a+x packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.sysv - chmod a+x packaging/sys-etc/cron.hourly/ovirt_engine_dwh_watchdog.cron + chmod a+x packaging/services/ovirt-engine-dwhd/ovirt_engine_dwh_watchdog.cron $(BUILD_FILE): export MAVEN_OPTS="${MAVEN_OPTS} -XX:MaxPermSize=512m" @@ -253,7 +253,7 @@ $(NULL) $(MAKE) copy-recursive SOURCEDIR=packaging/sys-etc TARGETDIR="$(DESTDIR)$(SYSCONF_DIR)" EXCLUDE_GEN="$(GENERATED)" $(MAKE) copy-recursive SOURCEDIR=packaging/etc TARGETDIR="$(DESTDIR)$(PKG_SYSCONF_DIR)" EXCLUDE_GEN="$(GENERATED)" - for d in bin dbscripts etl services legacy-setup; do \ + for d in dbscripts etl services legacy-setup; do \ $(MAKE) copy-recursive SOURCEDIR="packaging/$${d}" TARGETDIR="$(DESTDIR)$(PKG_DATA_DIR)/$${d}" EXCLUDE_GEN="$(GENERATED)"; \ done diff --git a/ovirt-engine-dwh.spec.in b/ovirt-engine-dwh.spec.in index 9ce4547..61c9827 100644 --- a/ovirt-engine-dwh.spec.in +++ b/ovirt-engine-dwh.spec.in @@ -23,8 +23,8 @@ %endif %if 0%{?fedora} -%global ovirt_install_systemd 0 -%global ovirt_install_systemv 1 +%global ovirt_install_systemd 1 +%global ovirt_install_systemv 0 %global ovirt_install_poms 1 %global ovirt_require_maven 1 %endif @@ -71,7 +71,6 @@ PREFIX=%{_prefix} \\\ SYSCONF_DIR=%{_sysconfdir} \\\ BIN_DIR=%{_bindir} \\\ - PID_DIR=%{_localstatedir}/run \\\ DATAROOT_DIR=%{_datadir} \\\ MAN_DIR=%{_mandir} \\\ DOC_DIR=%{_docdir} \\\ @@ -197,6 +196,8 @@ %endif %if %{ovirt_install_systemv} +install -dm 755 "%{buildroot}%{_sysconfdir}/cron.hourly" +cp "%{buildroot}%{_datadir}/ovirt-engine-dwh/services/ovirt-engine-dwhd/ovirt_engine_dwh_watchdog.cron" "%{buildroot}%{_sysconfdir}/cron.hourly" install -dm 755 "%{buildroot}%{_initddir}" cp "%{buildroot}%{_datadir}/ovirt-engine-dwh/services/ovirt-engine-dwhd/ovirt-engine-dwhd.sysv" "%{buildroot}%{_initddir}/ovirt-engine-dwhd" %endif @@ -241,7 +242,6 @@ %files %attr(-, %{engine_user}, %{engine_group}) %config(noreplace) %{_sysconfdir}/ovirt-engine-dwh/Default.properties -%config %{_sysconfdir}/cron.hourly/ovirt_engine_dwh_watchdog.cron %config %{_sysconfdir}/ovirt-engine-dwh/ovirt-engine-dwhd-log4j.xml %config(noreplace) %{_sysconfdir}/logrotate.d/ovirt-engine-dwhd %dir %attr(-, %{engine_user}, %{engine_group}) %{_localstatedir}/lib/ovirt-engine-dwh/ @@ -265,6 +265,7 @@ %{_unitdir}/ovirt-engine-dwhd.service %endif %if %{ovirt_install_systemv} +%config %{_sysconfdir}/cron.hourly/ovirt_engine_dwh_watchdog.cron %{_initddir}/ovirt-engine-dwhd %endif diff --git a/packaging/bin/etl-common-functions.sh.in b/packaging/bin/etl-common-functions.sh.in deleted file mode 100644 index 5d3f228..0000000 --- a/packaging/bin/etl-common-functions.sh.in +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -procrunning() { - procid=0 - for procid in `cat "@DWH_PID@"`; do - ps -fp $procid | grep HistoryETL > /dev/null && pid=$procid - done -} \ No newline at end of file diff --git a/packaging/bin/history_service.sh.in b/packaging/bin/history_service.sh.in deleted file mode 100755 index 5452bb5..0000000 --- a/packaging/bin/history_service.sh.in +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -die() { - local m="$1" - echo "FATAL: ${m}" >&2 - exit 1 -} - -JAVA_HOME="$("@DATAROOT_DIR@/ovirt-engine/bin/java-home")" || die "Cannot set JAVA_HOME" -export JAVA_HOME -export JAVA_MODULEPATH="@PKG_JBOSS_MODULES@:@JBOSS_HOME@/modules" -export CLASSPATH="" - -LOGFILE="@PKG_LOG_DIR@/ovirt-engine-dwhd.log" - -"${JAVA_HOME}/bin/java" \ - -Dlog4j.configuration="file:@PKG_SYSCONF_DIR@/ovirt-engine-dwhd-log4j.xml" \ - -Djboss.modules.write-indexes=false \ - -jar "@JBOSS_HOME@/jboss-modules.jar" \ - -dependencies org.ovirt.engine.dwh \ - -class ovirt_engine_dwh.historyetl_3_3.HistoryETL \ - --context=Default \ - "$@" \ - > "${LOGFILE}" 2>&1 & -echo $! > "${ETL_PID}" diff --git a/packaging/services/ovirt-engine-dwhd/__init__.py b/packaging/services/ovirt-engine-dwhd/__init__.py new file mode 100644 index 0000000..aa5eb8e --- /dev/null +++ b/packaging/services/ovirt-engine-dwhd/__init__.py @@ -0,0 +1,19 @@ +# Copyright 2012 Red Hat +# +# 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. + + +__all__ = [] + + +# vim: expandtab tabstop=4 shiftwidth=4 diff --git a/packaging/services/ovirt-engine-dwhd/config.py.in b/packaging/services/ovirt-engine-dwhd/config.py.in new file mode 100644 index 0000000..2ca279e --- /dev/null +++ b/packaging/services/ovirt-engine-dwhd/config.py.in @@ -0,0 +1,25 @@ +# Copyright 2012 Red Hat +# +# 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. + + +DEV_PYTHON_DIR = '@DEV_PYTHON_DIR@' +DWH_VARS = '@DWH_VARS@' + + +import sys +if DEV_PYTHON_DIR: + sys.path.insert(0, DEV_PYTHON_DIR) + + +# vim: expandtab tabstop=4 shiftwidth=4 diff --git a/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.conf.in b/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.conf.in new file mode 100644 index 0000000..ed7d9bc --- /dev/null +++ b/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.conf.in @@ -0,0 +1,25 @@ +# +# This file holds the configuration of oVirt dataware house daemon. +# + +# +# Comma separated list of keys +# not to be logged. +# +SENSITIVE_KEYS="" + +# +# File locations +# +PKG_SYSCONF_DIR="@PKG_SYSCONF_DIR@" +PKG_LOG_DIR="@PKG_LOG_DIR@" +PKG_STATE_DIR="@PKG_STATE_DIR@" +PKG_DATA_DIR="@PKG_DATA_DIR@" +PKG_JBOSS_MODULES="@PKG_JBOSS_MODULES@" +JBOSS_HOME="@JBOSS_HOME@" + +# +# Daemon settings +# +DAEMON_STOP_TIME=30 +DAEMON_STOP_INTERVAL=1 diff --git a/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.py b/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.py new file mode 100755 index 0000000..4e326c5 --- /dev/null +++ b/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.py @@ -0,0 +1,191 @@ +#!/usr/bin/python + +# Copyright 2012 Red Hat +# +# 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. + + +import os +import sys +import gettext +_ = lambda m: gettext.dgettext(message=m, domain='ovirt-engine-dwh') + + +import config + + +from ovirt_engine import configfile +from ovirt_engine import service +from ovirt_engine import java + + +class Daemon(service.Daemon): + + def __init__(self): + super(Daemon, self).__init__() + self._defaults = os.path.abspath( + os.path.join( + os.path.dirname(sys.argv[0]), + 'ovirt-engine-dwhd.conf', + ) + ) + + def _checkInstallation( + self, + pidfile, + jbossModulesJar, + ): + # Check the required JBoss directories and files: + self.check( + name=self._config.get('JBOSS_HOME'), + directory=True, + ) + self.check( + name=jbossModulesJar, + ) + + # Check the required directories and files: + self.check( + os.path.join( + self._config.get('PKG_DATA_DIR'), + 'services', + ), + directory=True, + ) + self.check( + self._config.get('PKG_LOG_DIR'), + directory=True, + writable=True, + ) + for log in ('ovirt-engine-dwhd.log',): + self.check( + name=os.path.join( + self._config.get('PKG_LOG_DIR'), + log, + ), + mustExist=False, + writable=True, + ) + if pidfile is not None: + self.check( + name=pidfile, + writable=True, + mustExist=False, + ) + + def daemonSetup(self): + + if os.geteuid() == 0: + raise RuntimeError( + _('This service cannot be executed as root') + ) + + if not os.path.exists(self._defaults): + raise RuntimeError( + _( + "The configuration defaults file '{file}' " + "required but missing" + ).format( + file=self._defaults, + ) + ) + + self._config = configfile.ConfigFile( + ( + self._defaults, + config.DWH_VARS, + ), + ) + + # + # the earliest so we can abort early. + # + self._executable = os.path.join( + java.Java().getJavaHome(), + 'bin', + 'java', + ) + + jbossModulesJar = os.path.join( + self._config.get('JBOSS_HOME'), + 'jboss-modules.jar', + ) + + self._checkInstallation( + pidfile=self.pidfile, + jbossModulesJar=jbossModulesJar, + ) + + self._serviceArgs = [ + 'ovirt-engine-dwhd', + '-Dlog4j.configuration=file://%s/ovirt-engine-dwhd-log4j.xml' % ( + self._config.get('PKG_SYSCONF_DIR'), + ), + '-Djboss.modules.write-indexes=false', + '-jar', jbossModulesJar, + '-dependencies', 'org.ovirt.engine.dwh', + '-class', 'ovirt_engine_dwh.historyetl_3_3.HistoryETL', + '--context=Default', + ] + + self._serviceEnv = os.environ.copy() + self._serviceEnv.update({ + 'PATH': ( + '/usr/local/sbin:/usr/local/bin:' + '/usr/sbin:/usr/bin:/sbin:/bin' + ), + 'LANG': 'en_US.UTF-8', + 'LC_ALL': 'en_US.UTF-8', + 'CLASSPATH': '', + 'JAVA_MODULEPATH': '%s:%s' % ( + self._config.get('PKG_JBOSS_MODULES'), + os.path.join( + self._config.get('JBOSS_HOME'), + 'modules', + ) + ), + 'DWH_DEFAULTS': self._defaults, + 'DWH_VARS': config.DWH_VARS, + }) + + def daemonStdHandles(self): + consoleLog = open( + os.path.join( + self._config.get('PKG_LOG_DIR'), + 'ovirt-engine-dwhd.log' + ), + 'w+', + ) + return (consoleLog, consoleLog) + + def daemonContext(self): + self.daemonAsExternalProcess( + executable=self._executable, + args=self._serviceArgs, + env=self._serviceEnv, + stopTime=self._config.getinteger( + 'DAEMON_STOP_TIME' + ), + stopInterval=self._config.getinteger( + 'DAEMON_STOP_INTERVAL' + ), + ) + + +if __name__ == '__main__': + service.setupLogger() + d = Daemon() + d.run() + + +# vim: expandtab tabstop=4 shiftwidth=4 diff --git a/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.systemd.in b/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.systemd.in new file mode 100644 index 0000000..57ee99c --- /dev/null +++ b/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.systemd.in @@ -0,0 +1,14 @@ +[Unit] +Description=oVirt Engine Dataware House +After=network.service postgresql.service + +[Service] +Type=simple +User=@PKG_USER@ +Group=@PKG_GROUP@ +ExecStart=@PKG_DATA_DIR@/services/ovirt-engine-dwhd/ovirt-engine-dwhd.py --redirect-output $EXTRA_ARGS start +EnvironmentFile=-/etc/sysconfig/ovirt-engine-dwhd +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.sysv.in b/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.sysv.in index 9619148..41de736 100644 --- a/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.sysv.in +++ b/packaging/services/ovirt-engine-dwhd/ovirt-engine-dwhd.sysv.in @@ -1,214 +1,77 @@ #!/bin/sh # -# This shell script takes care of starting and stopping oVirt Engine History ETL Service +# Start/stop oVirt Engine Dataware House # -# chkconfig: 2345 99 00 -# processname: ovirt-engine-dwhd -# pidfile: /var/run/ovirt-engine/ovirt-engine-dwhd.pid -# +# chkconfig: - 65 34 +# description: oVirt Engine Dataware House +# pidfile: /var/run/ovirt-engine-dwhd.pid + ### BEGIN INIT INFO # Provides: ovirt-engine-dwhd -# Required-Start: $syslog $network -# Should-Start: $time -# Required-Stop: $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Description: oVirt Engine History ETL Service for Data Warehouse and Reporting -# Short-Description: oVirt Engine History ETL Service for Data Warehouse and Reporting +# Short-Description: oVirt Engine Dataware House ### END INIT INFO -# -# # Source function library. -. /etc/init.d/functions +. /etc/rc.d/init.d/functions -# ETL functions library. -. "@PKG_DATA_DIR@/bin/etl-common-functions.sh" +NAME="ovirt-engine-dwhd" +PROG="oVirt Engine Dataware House" -prog=ovirt-engine-dwhd +[ -f "/etc/sysconfig/${NAME}" ] && . "/etc/sysconfig/${NAME}" + RETVAL=0 -PIDFILE="@DWH_PID@" -LOG_FOLDER="@PKG_LOG_DIR@" -LOG_FILE="${LOG_FOLDER}/ovirt-engine-dwhd.log" -OVIRT_USER="@PKG_USER@" - - -#create the log directory -if [ ! -d LOG_FOLDER ]; then - mkdir -p $LOG_FOLDER > /dev/null 2>&1 - if [ $? -ne 0 ]; then - echo "Error: Please check permissions, can not create log folder: $LOG_FOLDER. " - exit 5 - fi -fi - -if [ -f ${LOG_FILE} ] ; then - chown "${OVIRT_USER}" "${LOG_FILE}" -fi - -# Path to the ovirt-engine-dwhd launch script -ETL_SCRIPT="@PKG_DATA_DIR@/bin/history_service.sh" - -if [ -z "$SHUTDOWN_WAIT" ]; then - SHUTDOWN_WAIT=10 -fi - -lock_file=/var/lock/subsys/$prog - -start() { - if [ -f $lock_file ] ; then - if [ -f "${PIDFILE}" ]; then - read kpid < "${PIDFILE}" - if checkpid $kpid 2>&1; then - echo "$prog process (pid $kpid) is already running" - return 0 - else - echo "lock file found but no process is running for pid $kpid, continuing" - fi - fi - fi - rm -f "@PKG_STATE_DIR@/kill" > /dev/null 2>&1 - echo > "${PIDFILE}" - chown "${OVIRT_USER}" "${PIDFILE}" - echo -n $"Starting $prog: at $(date)" - daemon --user $OVIRT_USER --pidfile="${PIDFILE}" \ - ETL_PID="${PIDFILE}" ${ETL_SCRIPT} > /dev/null 2>&1 - RETVAL=$? - sleep 10 - pid=0 - procrunning > /dev/null 2>&1 - [ $RETVAL = 0 ] && [ $pid != '0' ] && touch $lock_file && success || failure - RETVAL=$? - echo - if [ $RETVAL != 0 ]; then - echo > "@PKG_STATE_DIR@/kill" - fi - return $RETVAL -} - -stop() { - echo -n $"Stopping $prog: " - pid=0 - procrunning > /dev/null 2>&1 - if [ $pid = '0' ]; then - failure $"$prog shutdown" - echo -n -e "\noVirt ETL Service is currently not running\n" - if [ -f $lock_file ]; then - rm -f $lock_file - fi - if [ -f "${PIDFILE}" ]; then - rm -f "${PIDFILE}" - fi - return 1 - fi - - # If process is still running - - # First, try to kill it nicely - echo > "@PKG_STATE_DIR@/kill" > /dev/null 2>&1 - sleep 10 - - pid=0 - procrunning > /dev/null 2>&1 - - if [ $pid != '0' ]; then - sleep 10 - fi - - pid=0 - procrunning > /dev/null 2>&1 - - if [ $pid != '0' ]; then - sleep 10 - fi - - pid=0 - procrunning > /dev/null 2>&1 - - # Second, try to kill signal it nicely - if [ $pid != '0' ]; then - killproc -p "${PIDFILE}" -d $SHUTDOWN_WAIT > /dev/null 2>&1 - fi - - # Still not dead... notify user - - pid=0 - procrunning > /dev/null 2>&1 - - if [ $pid != '0' ] ; then - failure $"$prog shutdown" - echo -n -e "\nTimeout: Shutdown command was sent, but process is still running with PID $pid\n" - return 1 - else - if [ -f $lock_file ]; then - rm -f $lock_file - fi - if [ -f "${PIDFILE}" ]; then - rm -f "${PIDFILE}" - fi - success $"$prog shutdown";echo - return 0 - fi -} - -status() { - RETVAL="1" - STOPPED="0" - if [ -f "${PIDFILE}" ]; then - read kpid < "${PIDFILE}" - if checkpid $kpid 2>&1; then - echo "$0 is running (pid ${kpid})" - RETVAL="0" - else - echo "oVirt ETL service is not running for pid $kpid" - rm -f $lock_file "${PIDFILE}" - fi - else - pid="$(pgrep -fu $OVIRT_USER ovirt_engine_dwh\.historyetl_3_3\.HistoryETL)" - if [ -n "$pid" ]; then - echo "ETL service $0 running (${pid}) but no PID file exists" - RETVAL="0" - else - echo "$0 is stopped" - rm -f $lock_file - fi - fi - return $RETVAL -} - +LOCKFILE="/var/lock/subsys/${NAME}" +PIDFILE="${PIDFILE:-/var/run/${NAME}.pid}" +PKG_USER="@PKG_USER@" +PKG_DATA_DIR="@PKG_DATA_DIR@" # See how we were called. case "$1" in - start) - start - ;; - stop) - stop - ;; - status) - status - ;; - restart) - stop - sleep 2 - start - ;; - condrestart) - if [ -f "${PIDFILE}" ] ; then - stop - sleep 2 - start - else - echo "oVirt ETL Service is currently not running" - fi - ;; - *) - echo "Usage: $0 {start|stop|status|restart|condrestart}" - RETVAL=3 + start) + if [ `id -u` -ne 0 ]; then + echo $"Insufficient privilege" 1>&2 + exit 4 + fi + echo -n $"Starting $PROG: " + touch "${PIDFILE}" + chown "${PKG_USER}" "${PIDFILE}" + daemon --user "${PKG_USER}" --pidfile="${PIDFILE}" \ + "${PKG_DATA_DIR}/services/${NAME}/${NAME}.py" \ + --pidfile="${PIDFILE}" \ + --background \ + --redirect-output \ + ${EXTRA_ARGS} \ + start + RETVAL=$? + echo + if [ $RETVAL -eq 0 ]; then + touch "${LOCKFILE}" + else + if [ -f "${LOCKFILE}" ]; then + RETVAL=0 + fi + fi + ;; + stop) + echo -n $"Stopping $PROG: " + killproc -p "${PIDFILE}" -d 60 + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && rm -f "${LOCKFILE}" + ;; + status) + status -p "${PIDFILE}" "${NAME}" + RETVAL=$? + ;; + restart) + $0 stop + $0 start + RETVAL=$? + ;; + *) + echo $"Usage: $0 {start|stop|status|restart}" + exit 2 + ;; esac exit $RETVAL - -# -# -# end diff --git a/packaging/services/ovirt-engine-dwhd/ovirt_engine_dwh_watchdog.cron.in b/packaging/services/ovirt-engine-dwhd/ovirt_engine_dwh_watchdog.cron.in new file mode 100644 index 0000000..349d459 --- /dev/null +++ b/packaging/services/ovirt-engine-dwhd/ovirt_engine_dwh_watchdog.cron.in @@ -0,0 +1,9 @@ +#!/bin/sh + +PIDFILE="/var/run/ovirt-engine-dwhd.pid" + +if ! [ -e "@PKG_STATE_DIR@/kill" ]; then + if ! service ovirt-engine-dwhd status > /dev/null 2>&1; then + service ovirt-engine-dwhd start > /dev/null 2>&1 + fi +fi diff --git a/packaging/sys-etc/cron.hourly/ovirt_engine_dwh_watchdog.cron.in b/packaging/sys-etc/cron.hourly/ovirt_engine_dwh_watchdog.cron.in deleted file mode 100644 index 14557b3..0000000 --- a/packaging/sys-etc/cron.hourly/ovirt_engine_dwh_watchdog.cron.in +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# ETL functions library. -. "@PKG_DATA_DIR@/bin/etl-common-functions.sh" - -if ! [ -e "@PKG_STATE_DIR@/kill" ]; then - pid=0 - procrunning > /dev/null 2>&1 - if [ $pid = '0' ]; then - service ovirt-engine-dwhd start > /dev/null 2>&1 - fi -fi -- To view, visit http://gerrit.ovirt.org/22445 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic506d6962f8ccfc9bb7538484aee2867491d8b20 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-dwh Gerrit-Branch: master Gerrit-Owner: Alon Bar-Lev <alo...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches