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

Reply via email to