Disable file-logging for tools on ext. nodes
authorHelga Velroyen <helgav@google.com>
Mon, 4 Jan 2016 15:02:49 +0000 (16:02 +0100)
committerHelga Velroyen <helgav@google.com>
Thu, 7 Jan 2016 13:33:42 +0000 (14:33 +0100)
Some tools not necessarily run on Ganeti nodes, for example
the 'move-instance' tool which can be run from any machine
that has RAPI access. With the changes in tool-logging, the
default assumes that the tool is run on a Ganeti node, because
we expect the '/var/log/ganeti/' directory to be present.
However, to use the same infrastructure for tools that do
not fulfill this requirement, this patch adds an option to
disable file logging in this case.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

lib/utils/log.py
tools/move-instance

index c39e96a..903d993 100644 (file)
@@ -255,7 +255,7 @@ def SetupLogging(logfile, program, debug=0, stderr_logging=False,
     syslog_handler.setLevel(logging.INFO)
     root_logger.addHandler(syslog_handler)
 
-  if syslog != constants.SYSLOG_ONLY:
+  if syslog != constants.SYSLOG_ONLY and logfile:
     # this can fail, if the logging directories are not setup or we have
     # a permisssion problem; in this case, it's best to log but ignore
     # the error if stderr_logging is True, and if false we re-raise the
@@ -287,7 +287,7 @@ def SetupLogging(logfile, program, debug=0, stderr_logging=False,
 
 
 def SetupToolLogging(debug, verbose, threadname=False,
-                     toolname=None):
+                     toolname=None, logfile=pathutils.LOG_TOOLS):
   """Configures the logging module for tools.
 
   All log messages are sent to the tools.log logfile.
@@ -300,6 +300,10 @@ def SetupToolLogging(debug, verbose, threadname=False,
   @param verbose: Enable verbose log messages
   @type threadname: boolean
   @param threadname: Whether to include thread name in output
+  @type logfile: string
+  @param logfile: the path of the log file to use, use "None"
+    for tools which don't necessarily run on Ganeti nodes (and
+    thus don't have the Ganeti log directory).
 
   """
   if not toolname:
@@ -312,7 +316,7 @@ def SetupToolLogging(debug, verbose, threadname=False,
   if debug:
     debug_int = 1
 
-  SetupLogging(pathutils.LOG_TOOLS,
+  SetupLogging(logfile,
                program=toolname,
                debug=debug_int,
                multithreaded=threadname,
index 5507a86..32474d5 100755 (executable)
@@ -1035,7 +1035,8 @@ def main():
 
   utils.SetupToolLogging(
       options.debug, options.verbose, threadname=True,
-      toolname=os.path.splitext(os.path.basename(__file__))[0])
+      toolname=os.path.splitext(os.path.basename(__file__))[0],
+      logfile=None)
 
   (src_cluster_name, dest_cluster_name, instance_names) = \
     CheckOptions(parser, options, args)