Signed-off-by: Guido Trotter <ultrot...@google.com>
---
 lib/confd/querylib.py |    5 +++++
 lib/confd/server.py   |   13 +++++++------
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/lib/confd/querylib.py b/lib/confd/querylib.py
index e4fd753..5b74e01 100644
--- a/lib/confd/querylib.py
+++ b/lib/confd/querylib.py
@@ -30,6 +30,7 @@ class ConfdQuery(object):
   """Confd Query base class.
 
   """
+  QUERY = None
   def __init__(self, reader):
     """Constructor for Confd Query
 
@@ -62,6 +63,8 @@ class PingQuery(ConfdQuery):
   It will return success on an empty argument, and an error on any other 
argument.
 
   """
+  QUERY = constants.CONFD_REQ_PING
+
   def Exec(self, query):
     """EmptyQuery main execution
 
@@ -81,6 +84,8 @@ class NodeRoleQuery(ConfdQuery):
   It will return success on an empty argument, and an error on any other 
argument.
 
   """
+  QUERY = constants.CONFD_REQ_NODE_ROLE_BYNAME
+
   def Exec(self, query):
     """EmptyQuery main execution
 
diff --git a/lib/confd/server.py b/lib/confd/server.py
index a39a535..7c37e2a 100644
--- a/lib/confd/server.py
+++ b/lib/confd/server.py
@@ -42,12 +42,6 @@ class ConfdProcessor(object):
   """A processor for confd requests.
 
   """
-  DISPATCH_TABLE = {
-      constants.CONFD_REQ_PING: querylib.PingQuery,
-      constants.CONFD_REQ_NODE_ROLE_BYNAME: querylib.NodeRoleQuery,
-      constants.CONFD_REQ_NODE_PIP_BY_INSTANCE_IP: querylib.ConfdQuery,
-  }
-
   def __init__(self, reader):
     """Constructor for ConfdProcessor
 
@@ -57,6 +51,13 @@ class ConfdProcessor(object):
     """
     self.reader = reader
     self.hmac_key = utils.ReadFile(constants.HMAC_CLUSTER_KEY)
+    self.DISPATCH_TABLE = {}
+    for query in dir(querylib):
+      if isinstance(query, querylib.ConfdQuery) and query.QUERY is not None:
+        self.DISPATCH_TABLE[query.QUERY] = query
+    for query in constants.CONFD_REQS:
+      if query not in self.DISPATCH_TABLE:
+        self.DISPATCH_TABLE[query] = querylib.ConfdQuery
     assert \
       not constants.CONFD_REQS.symmetric_difference(self.DISPATCH_TABLE), \
       "DISPATCH_TABLE is unaligned with CONFD_REQS"
-- 
1.5.6.5

Reply via email to