Change in vdsm[master]: Initialize supervdsm log before importing other modules

ybronhei at redhat.com ybronhei at redhat.com
Mon Jul 22 11:00:51 UTC 2013


Yaniv Bronhaim has uploaded a new change for review.

Change subject: Initialize supervdsm log before importing other modules
......................................................................

Initialize supervdsm log before importing other modules

1. When importing configNetwork, it imports libvirtconnection that
initializes it own logger. The setconfig should occurred before the import.
2. Adding log print on sigterm or sigusr1 are occurred.
3. Adding log print before each call to supervdsm.

Change-Id: Id3e95736aad91f80851cc50b20f629bf39a20599
Signed-off-by: Yaniv Bronhaim <ybronhei at redhat.com>
---
M vdsm/supervdsmServer.py
1 file changed, 26 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/99/17199/1

diff --git a/vdsm/supervdsmServer.py b/vdsm/supervdsmServer.py
index b952063..4a24e0c 100644
--- a/vdsm/supervdsmServer.py
+++ b/vdsm/supervdsmServer.py
@@ -18,16 +18,27 @@
 #
 from pwd import getpwnam
 import platform
-import logging
-import logging.config
 import sys
 import os
 import stat
 import errno
 import threading
 import re
-from storage import fuser
 import signal
+import logging
+import logging.config
+
+LOG_CONF_PATH = "/etc/vdsm/svdsm.logger.conf"
+
+try:
+    logging.config.fileConfig(LOG_CONF_PATH)
+except:
+    logging.basicConfig(filename='/dev/stdout', filemode='w+',
+                        level=logging.DEBUG)
+    log = logging.getLogger("SuperVdsm.Server")
+    log.warn("Could not init proper logging", exc_info=True)
+
+from storage import fuser
 from multiprocessing import Pipe, Process
 from gluster import listPublicFunctions
 import storage.misc as misc
@@ -73,6 +84,7 @@
 
     def wrapper(*args, **kwargs):
         try:
+            callbackLogger.debug('%s is called' % func.__name__)
             return func(*args, **kwargs)
         except:
             callbackLogger.error("Error in %s", func.__name__, exc_info=True)
@@ -81,7 +93,6 @@
 
 KB = 2 ** 10
 TEST_BUFF_LEN = 4 * KB
-LOG_CONF_PATH = "/etc/vdsm/svdsm.logger.conf"
 
 
 class _SuperVdsm(object):
@@ -337,6 +348,8 @@
 
 
 def main():
+    log = logging.getLogger("SuperVdsm.Server")
+
     def bind(func):
         def wrapper(_SuperVdsm, *args, **kwargs):
             return func(*args, **kwargs)
@@ -345,15 +358,16 @@
     for name, func in listPublicFunctions():
         setattr(_SuperVdsm, name, logDecorator(bind(func)))
 
-    try:
-        logging.config.fileConfig(LOG_CONF_PATH)
-    except:
-        logging.basicConfig(filename='/dev/stdout', filemode='w+',
-                            level=logging.DEBUG)
-        log = logging.getLogger("SuperVdsm.Server")
-        log.warn("Could not init proper logging", exc_info=True)
+    def sigtermHandler(signum, frame):
+        log.debug("Received signal %s. Taking supervdsm down" % signum)
+        # todo: should close all threads and exit smoothly
+        sys.exit(0)
 
-    log = logging.getLogger("SuperVdsm.Server")
+    def sigusr1Handler(signum, frame):
+        log.debug("Received signal %s" % signum)
+
+    signal.signal(signal.SIGTERM, sigtermHandler)
+    signal.signal(signal.SIGUSR1, sigusr1Handler)
 
     try:
         log.debug("Making sure I'm root - SuperVdsm")


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id3e95736aad91f80851cc50b20f629bf39a20599
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Yaniv Bronhaim <ybronhei at redhat.com>


More information about the vdsm-patches mailing list