From 05f1ebf3f14ecb7fd101f447e6bc1f666ba29a80 Mon Sep 17 00:00:00 2001
From: Guido Trotter <ultrotter@google.com>
Date: Fri, 28 Aug 2009 14:05:54 +0300
Subject: [PATCH] Move SimpleConfigReader creation to ConfdProcessor

This will be useful to make ConfdProcessor aware of a config failure,
without quitting confd.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 daemons/ganeti-confd | 19 ++++++++-----------
 lib/confd/server.py  | 10 +++++-----
 2 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/daemons/ganeti-confd b/daemons/ganeti-confd
index c8c5a48a7..734eb55d1 100755
--- a/daemons/ganeti-confd
+++ b/daemons/ganeti-confd
@@ -192,16 +192,16 @@ class ConfdConfigurationReloader(object):
   check, to verify that the reload hasn't failed.
 
   """
-  def __init__(self, reader, mainloop):
+  def __init__(self, processor, mainloop):
     """Constructor for ConfdConfigurationReloader
 
-    @type reader: L{ssconf.SimpleConfigReader}
-    @param reader: ganeti-confd SimpleConfigReader
+    @type processor: L{confd.server.ConfdProcessor}
+    @param processor: ganeti-confd ConfdProcessor
     @type mainloop: L{daemon.Mainloop}
     @param mainloop: ganeti-confd mainloop
 
     """
-    self.reader = reader
+    self.processor = processor
     self.mainloop = mainloop
 
     self.polling = False
@@ -239,7 +239,7 @@ class ConfdConfigurationReloader(object):
         raise errors.ConfdFatalError(err)
 
     try:
-      reloaded = self.reader.Reload()
+      reloaded = self.processor.reader.Reload()
       if reloaded:
         logging.info("Reloaded ganeti config")
       else:
@@ -275,7 +275,7 @@ class ConfdConfigurationReloader(object):
     """
     self.timer_handle = None
     try:
-      reloaded = self.reader.Reload()
+      reloaded = self.processor.reader.Reload()
     except errors.ConfigurationError:
       # transform a ConfigurationError in a fatal error, that will cause confd
       # to quit.
@@ -320,15 +320,12 @@ def ExecConfd(options, args):
   """
   mainloop = daemon.Mainloop()
 
-  # confd-level SimpleConfigReader
-  reader = ssconf.SimpleConfigReader()
-
   # Asyncronous confd UDP server
-  processor = ConfdProcessor(reader)
+  processor = ConfdProcessor()
   server = ConfdAsyncUDPServer(options.bind_address, options.port, processor)
 
   # Configuration reloader
-  reloader = ConfdConfigurationReloader(reader, mainloop)
+  reloader = ConfdConfigurationReloader(processor, mainloop)
 
   mainloop.Run()
 
diff --git a/lib/confd/server.py b/lib/confd/server.py
index 0930d53e4..7937dfd09 100644
--- a/lib/confd/server.py
+++ b/lib/confd/server.py
@@ -34,6 +34,7 @@ from ganeti import objects
 from ganeti import errors
 from ganeti import utils
 from ganeti import serializer
+from ganeti import ssconf
 
 from ganeti.confd import querylib
 
@@ -41,6 +42,8 @@ from ganeti.confd import querylib
 class ConfdProcessor(object):
   """A processor for confd requests.
 
+  @ivar reader: confd SimpleConfigReader
+
   """
   DISPATCH_TABLE = {
       constants.CONFD_REQ_PING: querylib.PingQuery,
@@ -49,14 +52,11 @@ class ConfdProcessor(object):
         querylib.InstanceIpToNodePrimaryIpQuery,
   }
 
-  def __init__(self, reader):
+  def __init__(self):
     """Constructor for ConfdProcessor
 
-    @type reader: L{ssconf.SimpleConfigReader}
-    @param reader: ConfigReader to use to access the config
-
     """
-    self.reader = reader
+    self.reader = ssconf.SimpleConfigReader()
     self.hmac_key = utils.ReadFile(constants.HMAC_CLUSTER_KEY)
     assert \
       not constants.CONFD_REQS.symmetric_difference(self.DISPATCH_TABLE), \
-- 
GitLab