Alon Bar-Lev has uploaded a new change for review.

Change subject: packaging: services: systemd: convert deamons into notify type
......................................................................

packaging: services: systemd: convert deamons into notify type

notify supports validation pre-start.

Change-Id: I598a9d57c6dae6eb9d26c8ccca7ce22cdb1170a3
Signed-off-by: Alon Bar-Lev <alo...@redhat.com>
---
M packaging/pythonlib/ovirt_engine/service.py
M packaging/services/ovirt-engine-notifier/ovirt-engine-notifier.systemd.in
M packaging/services/ovirt-engine/ovirt-engine.systemd.in
M packaging/services/ovirt-websocket-proxy/ovirt-websocket-proxy.systemd.in
4 files changed, 36 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/32/22632/1

diff --git a/packaging/pythonlib/ovirt_engine/service.py 
b/packaging/pythonlib/ovirt_engine/service.py
index a82e04c..699256f 100644
--- a/packaging/pythonlib/ovirt_engine/service.py
+++ b/packaging/pythonlib/ovirt_engine/service.py
@@ -16,10 +16,12 @@
 
 import logging
 import logging.handlers
+import contextlib
 import optparse
 import os
 import shutil
 import signal
+import socket
 import subprocess
 import sys
 import time
@@ -362,6 +364,25 @@
 
             raise
 
+    def _sd_notify_ready(self):
+        """
+        NOTICE: systemd-notify is not working!
+        SEE: rhbz#820448
+        """
+        with contextlib.closing(
+            socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
+        ) as s:
+            e = os.getenv('NOTIFY_SOCKET')
+            if e.startswith('@'):
+                # abstract namespace socket
+                e = '\0%s' % e[1:]
+            s.connect(e)
+            s.sendall('READY=1')
+
+    def _daemonReady(self):
+        if self._options.systemd == 'notify':
+            self._sd_notify_ready()
+
     def _daemon(self):
 
         self.logger.debug('daemon entry pid=%s', os.getpid())
@@ -370,6 +391,8 @@
         os.umask(0o022)
 
         self.daemonSetup()
+
+        self._daemonReady()
 
         stdout, stderr = (sys.stdout, sys.stderr)
         if self._options.redirectOutput:
@@ -440,6 +463,13 @@
             help=_('Go into the background'),
         )
         parser.add_option(
+            '--systemd',
+            dest='systemd',
+            default='simple',
+            choices=['simple', 'notify'],
+            help=_('Systemd type simple|notify'),
+        )
+        parser.add_option(
             '--redirect-output',
             dest='redirectOutput',
             action='store_true',
diff --git 
a/packaging/services/ovirt-engine-notifier/ovirt-engine-notifier.systemd.in 
b/packaging/services/ovirt-engine-notifier/ovirt-engine-notifier.systemd.in
index 9d53b2f..9ba5ebb 100644
--- a/packaging/services/ovirt-engine-notifier/ovirt-engine-notifier.systemd.in
+++ b/packaging/services/ovirt-engine-notifier/ovirt-engine-notifier.systemd.in
@@ -3,10 +3,10 @@
 After=network.service postgresql.service
 
 [Service]
-Type=simple
+Type=notify
 User=@ENGINE_USER@
 Group=@ENGINE_GROUP@
-ExecStart=@ENGINE_USR@/services/ovirt-engine-notifier/ovirt-engine-notifier.py 
--redirect-output $EXTRA_ARGS start
+ExecStart=@ENGINE_USR@/services/ovirt-engine-notifier/ovirt-engine-notifier.py 
--redirect-output --systemd=notify $EXTRA_ARGS start
 EnvironmentFile=-/etc/sysconfig/ovirt-engine-notifier
 
 [Install]
diff --git a/packaging/services/ovirt-engine/ovirt-engine.systemd.in 
b/packaging/services/ovirt-engine/ovirt-engine.systemd.in
index 978bc91..92e2b21 100644
--- a/packaging/services/ovirt-engine/ovirt-engine.systemd.in
+++ b/packaging/services/ovirt-engine/ovirt-engine.systemd.in
@@ -3,11 +3,11 @@
 After=network.service postgresql.service
 
 [Service]
-Type=simple
+Type=notify
 User=@ENGINE_USER@
 Group=@ENGINE_GROUP@
 LimitNOFILE=65535
-ExecStart=@ENGINE_USR@/services/ovirt-engine/ovirt-engine.py --redirect-output 
$EXTRA_ARGS start
+ExecStart=@ENGINE_USR@/services/ovirt-engine/ovirt-engine.py --redirect-output 
--systemd=notify $EXTRA_ARGS start
 EnvironmentFile=-/etc/sysconfig/ovirt-engine
 
 [Install]
diff --git 
a/packaging/services/ovirt-websocket-proxy/ovirt-websocket-proxy.systemd.in 
b/packaging/services/ovirt-websocket-proxy/ovirt-websocket-proxy.systemd.in
index 55093f7..7af0108 100644
--- a/packaging/services/ovirt-websocket-proxy/ovirt-websocket-proxy.systemd.in
+++ b/packaging/services/ovirt-websocket-proxy/ovirt-websocket-proxy.systemd.in
@@ -2,12 +2,12 @@
 Description=oVirt Engine websockets proxy
 
 [Service]
-Type=simple
+Type=notify
 User=@ENGINE_USER@
 Group=@ENGINE_GROUP@
 LimitNOFILE=65535
 LimitNPROC=2048
-ExecStart=@ENGINE_USR@/services/ovirt-websocket-proxy/ovirt-websocket-proxy.py 
$EXTRA_ARGS start
+ExecStart=@ENGINE_USR@/services/ovirt-websocket-proxy/ovirt-websocket-proxy.py 
--systemd-notify $EXTRA_ARGS start
 EnvironmentFile=-/etc/sysconfig/ovirt-websocket-proxy
 
 [Install]


-- 
To view, visit http://gerrit.ovirt.org/22632
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I598a9d57c6dae6eb9d26c8ccca7ce22cdb1170a3
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
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